2012-01-10 3 views
0

Можно создать дубликат:
Iwant java code for find spicific format/value from text fileнайти конкретный формат/значение из текстового файла

Я хочу Java-код, чтобы найти конкретный формат/значение из текстового файла.

Мой текстовый файл содержит следующий формат текста:

~ KL * 1 20 * 1 ~ NM1 * PR * 2 * СИНИЙ КРЕСТ Коннектикута ***** PI * 00060 ~ KL * 2 * 1 * 21 * 1 ~ NM1 * 1P * 1 * TOM * MATHEW **** XX * 2865321477 ~ KL * 3 * 2 * 22 * ​​1 ~ TRN * 1 * 163610204 * 1352091203 ~ NM1 * IL * 1 * CRISS * DONALD ~ KL * 4 * 3 * 23 * 0 ~ NM1 * 03 * 1 * TOM JACOB ~ DMG D8 * 19700208 ~ INS * N * 34 ~ HI * BK: 4168 * BF: 2859 * BF: 25060 ~ DTP * 291 * D8 * 20100506 ~ EQ * 5^32 ~ KL * 5 * 2 * 22 * ​​0 ~ TRN * 1 * 163610204 * 1352091203 ~ NM1 * IL * 1 * CRISS DONALD ~ DMG D8 * 19600208 ~ HI * BK : 3572 * BF: 45981 ~ DTP * 291 * D8 * 20100506 ~ EQ * 5^32 ~ SE * 24 * 324679238 Так что слушание ~ kL содержит некоторые значения, такие как * 1 20 * 1 и другие ~ kL содержат * 2 * 1 * 21 и другие ~ kl ... и так далее.

Теперь я хочу код, чтобы найти/выход для всех ~ KL но содержит * 22 пример: ~ KL * 5 * 2 * 22 * ​​0

+0

Вы хотите принять ввод типа ~ KL.blahblah ... BLUE CROSS ** 22 **? или «22» должны быть в первом разделе линии, а KL? Если 22 должен быть в первом разделе, что ограничивает раздел KL от другого материала ??? – user949300

ответ

1

Вы должны использовать регулярное выражение. Что-то вроде:

String input = "~KL*1**20*1~NM1*PR*2*BLUE CROSS OF CONNECTICUT***PI*00060 ~KL*2*1*21*1~NM1*1P*1*TOM*MATHEW**XX*2865321477..."; 
Pattern p = Pattern.compile("~KL.*22.*"); 
Matcher m = p.matcher(text); 

while (m.find()) { 
    System.out.println(m.group()); 
} 
+0

Это соответствовало бы что-то вроде «~ KL ... blahblah ... BLUE CROSS 22», правильно? Я не думаю, что он хочет. Однако до тех пор, пока оригинальный плакат не разъяснит, что означает конец раздела «KL», трудно сказать. – user949300

+0

Точно. Это будет соответствовать тому, что имеет '~ KL', в какой-то момент следует' 22'. Если ОП сможет уточнить ограничения каждого «раздела», это поможет. Но тем не менее регулярные выражения - это путь к его ответу. –

+0

Да, я согласен, что регулярное выражение - почти наверняка правильный подход, и, как только ОП разъяснит, вы, вероятно, получите от меня верхнюю часть. – user949300

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