String Tokenizer,分隔符

时间:2012-10-25 10:48:17

标签: java string tokenize

我正在使用此代码:

StringTokenizer tokenizer=new StringTokenizer(line, "::");

分割以下字符串:

hi my name is visghal:: what is yor name name:: being thw simple my::: what is yor name name.

现在我想使用::作为分隔符拆分字符串。它工作正常。但它也考虑了:::

换句话说,我想:

hi my name is visghal
what is yor name name
being thw simple my
: what is yor name name

相反,它给了我以下内容:

being thw simple my 
what is yor name name   
hi my name is visghal   

:::::同样如此。有没有办法避免这种情况?

3 个答案:

答案 0 :(得分:6)

你可以像这样使用String#split:

String[] arr = str.split("::");

修改

String[] arr = str.split("::\\s*"); // for stripping spaces after ::

<强>输出:

hi my name is visghal
what is yor name name
being thw simple my
: what is yor name name

答案 1 :(得分:2)

如果您需要String.split之外的其他功能,请尝试使用Guava Splitter。它将允许修剪和省略空字符串。

 String myInput = "...";
 Iterable<String> parts = Splitter.on("::").split(myInput);

答案 2 :(得分:0)

  

将::和:::视为相同

不,您的分隔符::在此字符串部分:::中找到两次,这是您的结果的解释。

您应该使用split("::")方法。