我想下面的代码(在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]
,我总是得到整个字符串。任何人都可以提出可能的原因吗?
我想下面的代码(在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]
,我总是得到整个字符串。任何人都可以提出可能的原因吗?
这是因为split
预计正则表达式。由于“$”是正则表达式中的行尾标记,因此仅在字符串的末尾进行分割。
您应该使用
String str = "abc$xyz";
String[] split_ = str.split("\\$");
System.out.println(split_.length);
代替。
这会转义“$”,以便将其视为文字字符(并使用两个斜线将反斜线作为字符串文字的一部分进行转义)。
$
字符是一个元字符,意思是“行尾”,而不是字面美元符号。
使用两个反斜杠转义$
字符,其中一个用于逃避正则表达式中的$
,另一个用于反斜线的Java转义。
String[] split_ = str.split("\\$");
.split()
使用正则表达式,这就是为什么...
试试这个:
String str = "abc$xyz";
String[] split_ = str.split("\\$");
System.out.println(split_.length);
http://stackoverflow.com/questions/2168831/string-split-function-in-java-does-not-work –
*************致主持人:你是欢迎删除此问题。请不要再赞成。 – Jake