разбор токена в Java - PullRequest
       23

разбор токена в Java

1 голос
/ 27 октября 2009

Я создал файл с объектом printStream, как показано ниже.

PrintStream outPutOffice = new PrintStream(
   new BufferedOutputStream(new FileOutputStream(inDir+"/Office.txt")));
outPutOffice.print(fValue + (findx < agtOffColCount ? "|" : ""));   

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

BufferedReader inPutAgent = new BufferedReader(
   new InputStreamReader(new FileInputStream(inDir+"/Office.txt")));

String column=inPutAgent.readLine();
String []columnDetail = column.split("|");

Массив columndetail содержит один символ в каждом индексе, вместо этого я хочу один токен в каждом индексе.

В чем проблема?

Ответы [ 3 ]

6 голосов
/ 27 октября 2009

метод split работает с регулярными выражениями, и поскольку символ канала (|) имеет специальное значение и зарезервирован, его необходимо экранировать следующим образом:

split("\\|");

Вы должны прочитать о регулярных выражениях здесь или здесь

4 голосов
/ 27 октября 2009

Вы должны заглянуть в StringTokenizer , это очень удобный инструмент для таких видов работы.

Пример

 StringTokenizer st = new StringTokenizer("this is a test");
 while (st.hasMoreTokens()) {
     System.out.println(st.nextToken());
 }

Это будет поставить

 this
 is
 a
 test

Вы используете Второй конструктор для StringTokenizer, чтобы установить разделитель:

StringTokenizer(String str, String delim)

Вы также можете использовать Сканер , так как один из комментаторов сказал, что это может выглядеть примерно так

* ** 1 022 тысяча двадцать-один * Пример
 String input = "1 fish 2 fish red fish blue fish";

 Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");

 System.out.println(s.nextInt());
 System.out.println(s.nextInt());
 System.out.println(s.next());
 System.out.println(s.next());

 s.close(); 

Вывод будет

 1
 2
 red
 blue 

Это означает, что оно исключит слово «рыба» и даст вам остальное, используя «рыбу» в качестве разделителя.

примеры взяты из Java API

2 голосов
/ 27 октября 2009

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

String []columnDetail = column.split("\\|");

или

String []columnDetail = column.split("[|]");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...