2014-03-04 29 views
1

我想使用分隔符(“:”)在各个部分打破字符串。所有字符可以用作Java中的字符串分隔符吗?

String sepIds[]=ids.split(":"); 

它工作正常。但是当我用“*”替换“:”并使用“*”作为分隔符时,它不起作用。

String sepIds[]=ids.split("*"); //doesn't work 

它只是挂在那里,并没有进一步执行。

我在这里犯了什么错误?

+2

* ,?在正则表达式中很少有其他符号有特殊意义(查看它)。 你必须逃避它们“\\ *”将工作 –

+0

String sepIds [] = ids.split(“\\\ *”); //作品 – LMK

+0

[java split function]的可能重复(http://stackoverflow.com/questions/5257459/java-split-function) – Joe

回答

1

String.split需要一个正则表达式参数。 *在正则表达式中有意义。所以,如果你想使用它们,那么你需要逃出他们是这样的:

String sepIds[]=ids.split("\\*"); 
1

String#split需要一个regular expression为参数。在正则表达式的一些字符具有特殊的含义,使他们需要进行转义,例如:

"foo*bar".split("\\*") 

结果会如您所愿:

[foo, bar] 

您也可以使用该方法Pattern#quote简化任务。

"foo*bar".split(Pattern.quote("*")) 
1

.split()的参数是一个正则表达式,而不是字符串文字。因此,您需要转义*,因为它是一个特殊的正则表达式字符。写:

ids.split("\\*"); 

这是你将如何分割agaisnt一个或多个空格:

ids.split("\\s+"); 

注意,番石榴Splitter这是非常,非常快,可以拆分对文字:

Splitter.on('*').split(ids); 
1

'*'和'。'是特殊字符,你必须对它进行黑键操作。

String sepIds[]=ids.split("\\*");

要了解更多关于Java模式,请访问that page.

1

Java的String.split()使用正则表达式来拆分字符串(与C#或python中的类似函数不同)。 *是正则表达式中的特殊字符,您需要使用\(反斜杠)将其转义。所以,你应该使用:

String sepIds[]=ids.split("\\*"); 

你可以找到在互联网上的任何位置上的正则表达式的更多信息Java语言支持的应该是这里的特殊字符相当完整列表:http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html