2014-10-13 5 views
0

Итак, я создаю приложение, но не уверен, как получить определенные части строки. Я прочитал в файл, как например:Извлечение части строки с помощью разделителя

*tp*|21394398437984|163600 
*2*|AAA|1234567894561236|STOP|20140527|Success||Automated|DSPRN1234567 
*2*|AAA|1234567894561237|STOP|20140527|Success||Automated|DPSRN1234568 
*3*|2 

мне нужно прочитать эти строки, начинающиеся с так что я сделал:

s = new Scanner(new BufferedReader(new FileReader("example.dat"))); 
while (s.hasNext()) { 
    String str1 = s.nextLine(); 
    if(str1.startsWith("*2*")) { 
     System.out.print(str1); 
    } 
} 

Так что это будет читать всю линию я в порядке с что, теперь моя проблема в том, что мне нужно извлечь вторую строку, начиная с цифр 4-го с номерами 5-го с успехом и 7-го (DPSRN).

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

ответ

0

Вы должны использовать String.split("|"), это даст вам массив - String []

0

Try следующее:

String test="*2*|AAA|1234567894561236|STOP|20140527|Success||Automated|DSPRN1234567"; 
String tok[]=test.split("\\|"); 
for(String s:tok){ 
System.out.println(s); 
} 

Выход:

*2* 
AAA 
1234567894561236 
STOP 
20140527 
Success 

Automated 
DSPRN1234567 

Что вам требуется будут размещены на tok[2], tok[4], tok[5] и tok[8].

0

Просто разделить возвращенную линию, основанную на поиске, которая возвращает массив String элементов, где вы можете получить ваши элементы на основе их индекс:

s = new Scanner(new BufferedReader(new FileReader("example.dat"))); 
String searchLine = ""; 
while (s.hasNext()) { 
    searchLine = s.nextLine(); 
    if(searchLine.startsWith("*2*")) { 
     break; 
    } 
} 
String[] strs = searchLine.split("|"); 
String secondArgument = strs[2]; 
String forthArgument = strs[4]; 
String fifthArgument = strs[5]; 
String seventhArgument = strs[7]; 
System.out.println(secondArgument); 
System.out.println(forthArgument); 
System.out.println(fifthArgument); 
System.out.println(seventhArgument); 
Смежные вопросы