我想使用分隔符(“:”)在各个部分打破字符串。所有字符可以用作Java中的字符串分隔符吗?
String sepIds[]=ids.split(":");
它工作正常。但是当我用“*”替换“:”并使用“*”作为分隔符时,它不起作用。
String sepIds[]=ids.split("*"); //doesn't work
它只是挂在那里,并没有进一步执行。
我在这里犯了什么错误?
我想使用分隔符(“:”)在各个部分打破字符串。所有字符可以用作Java中的字符串分隔符吗?
String sepIds[]=ids.split(":");
它工作正常。但是当我用“*”替换“:”并使用“*”作为分隔符时,它不起作用。
String sepIds[]=ids.split("*"); //doesn't work
它只是挂在那里,并没有进一步执行。
我在这里犯了什么错误?
String.split
需要一个正则表达式参数。 *在正则表达式中有意义。所以,如果你想使用它们,那么你需要逃出他们是这样的:
String sepIds[]=ids.split("\\*");
String#split需要一个regular expression为参数。在正则表达式的一些字符具有特殊的含义,使他们需要进行转义,例如:
"foo*bar".split("\\*")
结果会如您所愿:
[foo, bar]
您也可以使用该方法Pattern#quote简化任务。
"foo*bar".split(Pattern.quote("*"))
.split()
的参数是一个正则表达式,而不是字符串文字。因此,您需要转义*
,因为它是一个特殊的正则表达式字符。写:
ids.split("\\*");
这是你将如何分割agaisnt一个或多个空格:
ids.split("\\s+");
注意,番石榴Splitter
这是非常,非常快,可以拆分对文字:
Splitter.on('*').split(ids);
这是预期的行为。 documentation for the String split function表示输入字符串被视为regular expression(带有解释工作原理的链接)。正如德国人指出的,'*'是正则表达式中的一个特殊字符。
Java的String.split()
使用正则表达式来拆分字符串(与C#或python中的类似函数不同)。 *
是正则表达式中的特殊字符,您需要使用\
(反斜杠)将其转义。所以,你应该使用:
String sepIds[]=ids.split("\\*");
你可以找到在互联网上的任何位置上的正则表达式的更多信息Java语言支持的应该是这里的特殊字符相当完整列表:http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html
* ,?在正则表达式中很少有其他符号有特殊意义(查看它)。 你必须逃避它们“\\ *”将工作 –
String sepIds [] = ids.split(“\\\ *”); //作品 – LMK
[java split function]的可能重复(http://stackoverflow.com/questions/5257459/java-split-function) – Joe