为什么我不能用美元符号分割一个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