Строковый токенизатор в Java - PullRequest
1 голос
/ 12 августа 2011

Я использую String Tokenizer в моей программе для разделения строк.Разделитель, который я пытаюсь использовать, это ");".Но я узнал, что StringTokenizer использует) и;как 2 разных разделителя.Но я хочу использовать его в сочетании.Как я могу это сделать?

мой код:

StringTokenizer st = new StringTokenizer(str,");");
String temp[] = new String[st.countTokens()];
while(st.hasMoreTokens()) { 
    temp[i]=st.nextToken();
    i++;
}

Спасибо

Ответы [ 6 ]

2 голосов
/ 12 августа 2011

Как и предлагалось во многих ответах, String.split () решит вашу проблему.Чтобы избежать конкретной последовательности, которую вы пытаетесь токенизировать, вам нужно будет экранировать символ ')' в вашей последовательности, например:

str.split("\\);");
2 голосов
/ 12 августа 2011

В качестве альтернативы String # split (StringTokenizer устарела), если вам нравится Commons Lang, есть StringUtils # splitByWholeSeparator (нулевой сейф, и нет необходимости связываться с регулярными выражениями):

 String temp[] = splitByWholeSeparator(str, ");" );
0 голосов
/ 12 августа 2011

Это будет работать для вас.

import java.util.StringTokenizer;


public class StringTest {

/**
 * @param args
 */
public static void main(String[] args) {
    int i = 0;
    String str = "one);two);three);four";
    StringTokenizer st = new StringTokenizer(str, ");");
    String temp[] = new String[st.countTokens()];

    while (st.hasMoreTokens()) {

        temp[i] = st.nextToken();
        System.out.println(temp[i]);
        i++;
    }



}

}
0 голосов
/ 12 августа 2011

"StringTokenizer - это устаревший класс, который сохраняется из соображений совместимости, хотя его использование не рекомендуется в новом коде. Рекомендуется всем, кто ищет эту функцию, использовать вместо этого метод split String или пакет java.util.regex."

Вот что говорит док Sun.

String[] result = "this is a test".split("\\s");

Рекомендованный способ токенизации String.

0 голосов
/ 12 августа 2011

Вы должны попробовать использовать метод split (String regex) из класса String. Он должен работать просто отлично, и я думаю, он возвращает массив строк (как вы, кажется, предпочитаете). Вы всегда можете привести к списку, используя метод Arrays.asList ().

Ура, Тибериу

0 голосов
/ 12 августа 2011

Что-то не так с этим?

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