Java字符串拆分行为 - 拆分美元符号

时间:2015-11-19 19:53:42

标签: java string split

我正在尝试以下代码(在Ubuntu Linux 12.04上的Eclipse Luna IDE中运行java版本1.7):

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

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

3 个答案:

答案 0 :(得分:0)

$字符是元字符,意思是"行尾#34;而不是文字美元符号。

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

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

答案 1 :(得分:0)

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

试试这个:

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

答案 2 :(得分:0)

这是因为split需要正则表达式。自" $"是正则表达式中的行尾标记,它只在字符串的末尾分割。

你应该使用

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

代替。

这会转义" $",以便它被视为文字字符(并使用两个斜杠来转义反斜杠作为字符串文字的一部分)。