'$'的split()函数不起作用

时间:2014-03-06 06:50:06

标签: java

我正在做一个简单的代码

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]

为什么这不是'$'的夹板?

8 个答案:

答案 0 :(得分:20)

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支持的其他元字符为:<([{\^-=!|]})?*+.>

答案 1 :(得分:14)

split(Pattern.quote("$"))

是我的最爱。

请参阅Pattern#quote

  

返回指定String的文字模式String。

您的代码不起作用,因为$在正则表达式中具有特殊含义,并且由于String#split regex 作为参数,$是不被解释为字符串"$",而是被解释为特殊meta character $

答案 2 :(得分:8)

逃避它。 split()方法采用正则表达式:split("\\$")

答案 3 :(得分:4)

尝试这样的事情

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()使用正则表达式。

您的正则表达式使用特殊字符$

$是“行尾”的正则表达式。

答案 4 :(得分:2)

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

谢谢..

答案 5 :(得分:1)

逃脱它

split("\\$")

而不是拆分(“$”)

答案 6 :(得分:0)

String.split().match().replaceAll()是使用RegEx模式的一些方法,因此您应该查看Pattern class的javadoc:

如果您的分裂字符恰好是其中一个模式字符,则必须使用\\将其转义,在这种情况下,您的分割调用应为:.split("\\$")

答案 7 :(得分:0)

它不起作用,因为split()将输入作为RegEx

String splitString = "122$23$56$rt";
for(int i=0;i<splitString.split("\\$").length;i++){
System.out.println("I GOT IS :: "+splitString.split("\\$")[i]);
}