В документах для StringTokenizer
вы заметите, что рекомендуется не использовать его для какого-либо нового кода и что String.split(regex)
- это то, что вам нужно
String foo = "this is some data in a string";
String[] bar = foo.split("\\s+");
Изменить, чтобы добавить: Или, если у вас есть большие потребности, чем простое разбиение, используйте классы Pattern
и Matcher
для более сложного сопоставления и извлечения регулярных выражений.
Снова отредактируйте: Если вы хотите сохранить свое пространство, действительно полезно знать немного о регулярных выражениях:
String[] bar = foo.split("\\b+");
Это разделит границы слов, сохраняяпробел между каждым словом как String
;
public static void main( String[] args )
{
String foo = "this is some data in a string";
String[] bar = foo.split("\\b");
for (String s : bar)
{
System.out.print(s);
if (s.matches("^\\s+$"))
{
System.out.println("\t<< " + s.length() + " spaces");
}
else
{
System.out.println();
}
}
}
Вывод:
this
<< 1 spaces
is
<< 6 spaces
some
<< 2 spaces
data
<< 6 spaces
in
<< 3 spaces
a
<< 1 spaces
string