Как работает java "stringtokenizer.nextToken (delimiter);"? - PullRequest
0 голосов
/ 19 февраля 2011

Что я имею в виду, какие строковые значения принимаются в качестве разделителей?это потому, что я продолжаю пытаться использовать строку, состоящую из нескольких разных символов, но программа, кажется, просто игнорирует ее, просто сканируя с пустым пространством в качестве разделителя по умолчанию ...

Например, если строка с токенами имеет видследует: номер телефона = 790-3233

Я бы хотел, чтобы 1-й токен был до "=", поэтому я установил его в качестве разделителя, а следующий токен должен быть просто строкой "790-3233"

Заранее спасибо ...

Ответы [ 3 ]

1 голос
/ 19 февраля 2011

После замечания из документации API :

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

В этом случае я бы использовал split:

String text = "Phone Number = 790-3233";
String[] tokens = text.split("\\s*=\\s*");

Регулярное выражение \s*=\s* соответствует нулю или нескольким пробелам, за которым следует знак =, за которым следует ноль или более пробелов.

1 голос
/ 19 февраля 2011

По умолчанию в качестве разделителей используется space, если вы не указали один

    // Extracted StringTokenizer.java
     public StringTokenizer(String string) 
    {
            this(string, " \t\n\r\f", false); 
    }

Если вы указали = в качестве разделителя вместе со строкой, то он разбит

StringTokenizer st = new StringTokenizer("Phone Number = 790-3233","=");
0 голосов
/ 19 февраля 2011

Использование:

String[] result = "your string=790-3233".split("=");

Строковый токенайзер см. ссылка .

...