split String方法的奇怪行为[重复]
Posted
技术标签:
【中文标题】split String方法的奇怪行为[重复]【英文标题】:Strange behavior of split String method [duplicate] 【发布时间】:2015-12-01 15:02:02 【问题描述】:考虑一下这些简单的代码行:
public class Main
public static void main(String[] args)
String string = "Lorem,ipsum,dolor,sit,amet";
String[] strings = string.split(",");
for (String s : strings)
System.out.println(s);
正如预期的那样,输出如下:
Lorem
ipsum
dolor
sit
amet
现在考虑前面代码的变体,我只是将,
转换为|
:
public class Main
public static void main(String[] args)
String string = "Lorem|ipsum|dolor|sit|amet";
String[] strings = string.split("|");
for (String s : strings)
System.out.println(s);
我希望得到完全相同的输出,但奇怪的是:
L
o
r
e
m
|
i
p
s
u
m
|
d
o
l
o
r
|
s
i
t
|
a
m
e
t
怎么了?
【问题讨论】:
【参考方案1】:String#split() 方法接受一个正则表达式,|
在正则表达式中有特殊含义。
查看|
的预期结果转义。
String[] splits=string.split("\\|");
或者你可以使用Pattern
类,以避免所有的混乱。
String[] splits= string.split(Pattern.quote("|"));
【讨论】:
如果分隔符是动态的,例如作为参数传递给您的方法,请使用.split(Pattern.quote(separator))
。
@Andreas 同意,我只喜欢 Pattern 方式。我只是在清除 OP 的疑虑。以上是关于split String方法的奇怪行为[重复]的主要内容,如果未能解决你的问题,请参考以下文章
|在 java string.split() 方法中无法识别[重复]