我想要分割一个类似这样内容的字符串:
a$b$c
但是当我使用:
String data=...
data.split("$");
它无法识别 $ 并且不会分割字符串,但当我将 $ 替换为某个字母(如 X)时,它可以工作。 有人有任何想法吗?
我想要分割一个类似这样内容的字符串:
a$b$c
但是当我使用:
String data=...
data.split("$");
它无法识别 $ 并且不会分割字符串,但当我将 $ 替换为某个字母(如 X)时,它可以工作。 有人有任何想法吗?
split函数需要传入一个正则表达式,而不是字符串来进行匹配。你的正则表达式使用了特殊字符‘$’,因此你需要对它进行转义处理:
String line = ...
String[] lineData = line.split("\\$");
需要注意的是,split方法返回一个字符串数组。由于字符串是不可变的,所以它们无法被修改。对字符串所做的任何修改都会在新的字符串中返回,并且原始字符串不会被更改。因此,上述代码lineData = line.split("\\$");
。
split方法接受一个字符串作为第一个参数,然后将其解释为正则表达式。
美元符号在正则表达式中是一个特殊的运算符,因此你必须以这种方式转义它才能得到你想要的结果:
String data = ...
String[] parts = data.split("\\$");
或者,如果分隔符可能会改变,你可以更加通用地写成这样:
String data = ...
String[] parts = data.split(java.util.regex.Pattern.quote("$"));
split()
使用正则表达式作为参数。您需要调用split("\\$")
,因为$
是表示“行末”的正则表达式。
$是正则表达式中代表行尾的特殊字符。要匹配美元符号,请使用"\\$"
。
你可能遇到了非断空格的Unicode字符问题。尝试...
String[] elements = myString.split("[\\s\\xA0]+"); //include uniCode non-breaking