我正在尝试以下代码(在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]
,我总是得到整个字符串。任何人都可以提出可能的原因吗?
答案 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);
代替。
这会转义" $",以便它被视为文字字符(并使用两个斜杠来转义反斜杠作为字符串文字的一部分)。