2015-11-19 159 views
-1

我想下面的代码(在Ubuntu Linux 12.04在Eclipse月神IDE中运行Java版本1.7):Java的字符串分割行为 - 斯普利特的美元符号

String str = "abc$xyz"; 
String[] split_ = str.split("$"); 
System.out.println(split_.length); 

我总是得到长度为1的分裂。如果我尝试打印split_[0],我总是得到整个字符串。任何人都可以提出可能的原因吗?

+0

http://stackoverflow.com/questions/2168831/string-split-function-in-java-does-not-work –

+0

*************致主持人:你是欢迎删除此问题。请不要再赞成。 – Jake

回答

0

这是因为split预计正则表达式。由于“$”是正则表达式中的行尾标记,因此仅在字符串的末尾进行分割。

您应该使用

String str = "abc$xyz"; 
String[] split_ = str.split("\\$"); 
System.out.println(split_.length); 

代替。

这会转义“$”,以便将其视为文字字符(并使用两个斜线将反斜线作为字符串文字的一部分进行转义)。

+0

@Downvoter我犯了什么错误吗?我会很高兴知道它是什么,所以我可以纠正它。 – resueman

+0

这对我有用,谢谢! – Jake

+0

有人也低估了我的问题:( – Jake

0

$字符是一个元字符,意思是“行尾”,而不是字面美元符号。

使用两个反斜杠转义$字符,其中一个用于逃避正则表达式中的$,另一个用于反斜线的Java转义。

String[] split_ = str.split("\\$"); 
0

.split()使用正则表达式,这就是为什么...

试试这个:

String str = "abc$xyz"; 
String[] split_ = str.split("\\$"); 
System.out.println(split_.length);