Как изменить Stringtokenizer на строку

У меня есть мой код, который хотел бы изменить Stringtokenizer на String, потому что информация, которую я получаю, находится в предложении, и я хотел бы сократить ее до определенной части.

StringTokenizer numberOfPost_string = new StringTokenizer( numberOfPost_text , delimiters );

System.out.println( numberOfPost_string.nextToken() );

int numberOfPost = Integer.parseInt(numberOfPost_string);

Проблема, с которой я сталкиваюсь, связана с line int numberOfPost = Integer.parseInt(numberOfPost_string);, где она дает мне ошибку.

Или есть другой способ сократить предложение и преобразовать его в целое число?


person Poh Sun    schedule 24.10.2013    source источник
comment
вам нужно опубликовать содержимое numberOfPost_text и разделителей   -  person tom    schedule 24.10.2013
comment
Из numberOfPost_text я получаю 1221 (0,9 сообщения в день / 0,00% от общего числа сообщений на форуме). Я хочу получить значение 1221 из строки. Мои разделители - пробелы   -  person Poh Sun    schedule 24.10.2013
comment
используйте для этого регулярные выражения, а не токенизатор строк   -  person tom    schedule 24.10.2013


Ответы (2)


Вероятно, вы захотите использовать возвращаемое значение nextToken:

StringTokenizer numberOfPost_string = new StringTokenizer( numberOfPost_text , delimiters );
int numberOfPost = Integer.parseInt(numberOfPost_string.nextToken());

Вы также можете сделать это с помощью split: (хотя это, вероятно, немного менее эффективно)

int numberOfPost = Integer.parseInt(numberOfPost_text.split(delimiters)[0]);

Имейте в виду, что split принимает регулярное выражение String, поэтому для указания нескольких вариантов символов вам потребуется чтобы окружить их []. Чтобы указать ;, , или ::

String delimiters = "[;,:]";
person Bernhard Barker    schedule 24.10.2013
comment
Кажется, проблема в int numberOfPost = Integer.parseInt(numberOfPost_string.nextToken());. Я получаю ошибки в этой строке. Не могли бы вы помочь мне проверить? Извините, я новичок в Java. - person Poh Sun; 24.10.2013
comment
Исключение в потоке AWT-EventQueue-0 java.lang.NumberFormatException: для входной строки: 1221 в java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) в java.lang.Integer.parseInt(Integer.java:492) в java.lang.Integer.parseInt(Integer.java:527) в fyp.draft.pkg1.Design.jButton2ActionPerformed(Design.java:161) и многие другие - person Poh Sun; 24.10.2013
comment
Который говорит именно то, что это означает. 1221 не является допустимым целым числом. 1221 г. - person tom; 24.10.2013
comment
@PohSun 1,221 не может быть проанализирован parseInt. См. этот вопрос. - person Bernhard Barker; 24.10.2013
comment
@Дюкелинг. Понятно. Извиняюсь. Не знал об этом. Мои ошибки были исправлены. Извините и спасибо за ваше время. - person Poh Sun; 24.10.2013

Чтобы преобразовать токены в строку

String x = "";
StringTokenizer in = new StringTokenizer(str, ",;");
while(in.hasMoreTokens()) {
    x = x + in.nextToken().toString();
}
System.out.print(x);
person Akshay Reddy    schedule 01.02.2015