Java 字符串标记器,分隔符

Java 字符串标记器,分隔符,java,string,tokenize,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 y

我正在使用以下代码:

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   
它将
视为相同。有什么方法可以避免这种情况吗?

您可以像这样使用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
输出:

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
如果您需要在
String.split
上添加其他功能,请尝试番石榴。它将允许修剪和省略空字符串

 String myInput = "...";
 Iterable<String> parts = Splitter.on("::").split(myInput);
String myInput=“…”;
Iterable parts=Splitter.on(“:”).split(myInput);
它将::和:::视为相同

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


您应该使用
split(“::”
方法。

StringTokenizer已被弃用,请避免使用它