我在做一个简单的代码
String splitString = "122$23$56$rt";
for(int i=0;i<splitString.split("$").length;i++){
System.out.println("I GOT IS :: "+splitString.split("$")[i]);
}
当我像
splitString.split("$")
它给了我输出[122$23$56$rt]
为什么这不是夹板在"$"上?
String.split()
接受正则表达式作为参数,$
是Java regex API
中的元字符。因此,您需要对其进行转义:
String splitString = "122$23$56$rt";
for(int i=0;i<splitString.split("\$").length;i++){
System.out.println("I GOT IS :: "+splitString.split("\$")[i]);
}
Java regex API
支持的其他元字符包括:<([{^-=!|]})?*+.>
split(Pattern.quote("$"))
是我的最爱。
请参阅Pattern#quote
:
返回指定字符串的文本模式字符串。
您的代码不起作用,因为它$
正则表达式中具有特殊含义,并且由于String#split
将正则表达式作为参数,因此$
不会被解释为 String "$"
,而是解释为特殊的元字符$
。
转义它。 split()
方法采用正则表达式: split("\$")
尝试这样的事情
String splitString = "122$23$56$rt";
for(int i=0;i<splitString.split("\$").length;i++){
System.out.println("I GOT IS :: "+splitString.split("$")[i]);
}
注意:split()
使用正则表达式。
您的正则表达式使用特殊字符,即$
$
是"行尾"的正则表达式。
String splitString = "122$23$56$rt";
for(int i=0;i<splitString.length;i++){
System.out.println("Now you GOT this :: "+split(Pattern.quote("$")));
}
有12个字符具有特殊含义:反斜杠\,插入符号^,美元符号$,句点或点.,竖线或管道符号|,问号?,星号或星号*,加号+,左括号(,右括号)和左方括号[,左大括号{,这些特殊字符通常被称为"元字符"。
因此,您的$
也如定义所述metacharacter
,因此您无法使用简单的函数进行拆分。尽管在这种情况下必须使用pattern
。
谢谢。。
像
split("\$")
而不是拆分("$")
它不起作用,因为 split() 将输入作为正则表达式
String splitString = "122$23$56$rt";
for(int i=0;i<splitString.split("\$").length;i++){
System.out.println("I GOT IS :: "+splitString.split("\$")[i]);
}
String.split()
、.match()
、.replaceAll()
是一些使用正则表达式模式的方法,所以你应该看看模式类的javadoc:
如果您的拆分字符恰好是模式字符之一,则必须使用 \
对其进行转义,在这种情况下,您的拆分调用应该是:.split("\$")