为什么我不能用美元符号分割一个string?

我想分割一个string,其内容如下:

a$b$c 

但是当我使用:

 String data=... data.split("$"); 

它不承认$和不拆分string,但是当我通过一些像X这样的字母replace$它的作品。 有没有人有任何想法?

split函数需要一个正则expression式来匹配,而不是一个string。 你的正则expression式使用一个特殊的字符 – 在这种情况下是“$” – 所以你需要改变它来转义该字符:

 String line = ... String[] lineData = line.split("\\$"); 

另请注意,split将返回一个string数组 – string是不可变的,所以它们不能被修改。 对string进行的任何修改都将以新string的forms返回,并且原始内容不会被更改。 因此, lineData = line.split("\\$"); 以上。

split方法接受一个string作为第一个参数,然后解释为正则expression式。

美元符号是正则expression式中的特定运算符,因此您必须通过这种方式将其转义才能得到您想要的结果:

 String data = ... String[] parts = data.split("\\$"); 

或者,如果分隔符可能会发生变化,则可以使用更通用的方式:

 String data = ... String[] parts = data.split(java.util.regex.Pattern.quote("$")); 

split()使用正则expression式作为参数。 你必须调用split( "\\$" ) ,因为$是“行尾”的正则expression式。

$是代表行结束的正则expression式中的一个特殊字符。 要匹配美元符号,请使用"\\$"

Java中的String.split()接受一个正则expression式的String参数。 正则expression式中的'$'字符表示一行的结尾。 如果您在string中查找美元符号,则可以使用转义序列(“\\ $”)。

资料来源:

string – Java API

模式 – Java API

uniCode字符可能会遇到问题,以确保不中断空格。 尝试…

 String[] elements = myString.split("[\\s\\xA0]+"); //include uniCode non-breaking