2016-12-25 3 views
-1

У меня есть эта строка в Java:Извлечение строки из строки в Java

String str = "-High Upload Observed|High| eventId=285475664495 MMTT type=2 mrt=1482650158658 in=104858769 out=104858769 sessionId=0 generatorID=3+ACVIFkBABCAA951mZ0UyA\=\= modelConfidence=0 severity=0"; 

Из приведенных выше строк, мне нужен выход быть как

eventId=285475664495 MMTT 
type=2 
mrt=1482650158658 
in=104858769 
out=104858769 
sessionId=0 
generatorID=3+ACVIFkBABCAA951mZ0UyA\=\= 
modelConfidence=0 
severity=0 
+1

«Может кто-то мне помочь» => Конечно, мы можем. Покажите нам свой код, сообщите нам, где он не сможет получить ожидаемый результат, и мы охотно поможем вам исправить его. – Seelenvirtuose

+0

'String str =" -High Upload Observed | High | eventId = 285475664495 MMTT type = 2 mrt = 1482650158658 in = 104858769 out = 104858769 sessionId = 0 generatorID = 3 + ACVIFkBABCAA951mZ0UyA \ = \ = modelConfidence = 0 severity = 0 "' нужно извлечь атрибуты 'выход: EventID = 285475664495 ММТТ тип = 2 MRT = 1482650158658 в = 104858769 из = 104858769 SESSIONID = 0 generatorID = 3 + ACVIFkBABCAA951mZ0UyA \ = \ = modelConfidence = 0 severity = 0' –

+0

@Mohan Лучше обновите вопрос и четко укажите, что вещи, которые будут одинаковыми в строке (если есть) – GurV

ответ

4

разбить строку в массив с помощью |, получить третий элемент и удалить все после последнего пробела;

String s = "Office|High| eventId=285469322819 MMTT type=2"; 
s = s.split("\\|")[2].trim().replaceAll("[^ ]*$", "").trim(); 

EDIT:

Основываясь на том, что ОП приведены в комментарии и предполагая «type` всегда третье слово.

str = str.split("\\|")[2].replaceAll("type.*", "").trim() ; 

EDIT 2: Требование снова изменилось:

String str = "-High Upload Observed|High| eventId=285475664495 MMTT type=2 mrt=1482650158658 in=104858769 out=104858769 sessionId=0 generatorID=3+ACVIFkBABCAA951mZ0UyA\\=\\= modelConfidence=0 severity=0\" output : eventId=285475664495 MMTT type=2 mrt=1482650158658 in=104858769 out=104858769 sessionId=0 generatorID=3+ACVIFkBABCAA951mZ0UyA\\=\\= modelConfidence=0 severity=0"; 
Pattern p = Pattern.compile("[^ ]+=[^ ]+"); 
Matcher m = p.matcher(str.split("\"")[0]); 
while (m.find()) { 
    System.out.println(m.group()); 
} 

производит:

eventId=285475664495 
type=2 
mrt=1482650158658 
in=104858769 
out=104858769 
sessionId=0 
generatorID=3+ACVIFkBABCAA951mZ0UyA\=\= 
modelConfidence=0 
severity=0 

Признаюсь MMTT отсутствует в первой, но о хорошо.

+0

String str = "-High Upload Observed | High | eventId = 285475664495 MMTT type = 2 mrt = 1482650158658 in = 104858769 out = 104858769 sessionId = 0 generatorID = 3 + ACVIFkBABCAA951mZ0UyA \ = \ = modelConfidence = 0 тяжесть = 0" выход: EventID = 285475664495 ММТТ тип = 2 MRT = 1482650158658 в = 104858769 из = 104858769 SESSIONID = 0 generatorID = 3 + ACVIFkBABCAA951mZ0UyA \ = \ = modelConfidence = 0 severity = 0 " –

+0

@Mohan обновлен для ya – GurV

+0

Большое спасибо Gurwinder. это подходит для меня –

0

вы можете получить идентификатор так:

String str = "Office|High| eventId=285469322819 MMTT type=2"; 
eventId = str.split("eventId=")[1].split("type")[0].trim(); 
1

Вот шаблон регулярного выражения, который держит MMTT часть, а также:

Pattern pattern = Pattern.compile("([^ =]+)=([^ ]+(?: +[^ =]+(?= |$))*)"); 

Matcher matcher = pattern.matcher(str); 
while (matcher.find()) { 
    System.out.println(matcher.group()); 
} 

Вы также можете использовать group(1) и group(2), чтобы получить ключ и значение.

Смежные вопросы