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

use*_*855 23 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]);
}
Run Code Online (Sandbox Code Playgroud)

当我分裂的时候

splitString.split("$")
Run Code Online (Sandbox Code Playgroud)

它给了我输出 [122$23$56$rt]

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

小智 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]);
}
Run Code Online (Sandbox Code Playgroud)

其他支持的元字符Java regex API是:<([{\^-=!|]})?*+.>


Mar*_*oun 14

split(Pattern.quote("$"))
Run Code Online (Sandbox Code Playgroud)

是我的最爱.

Pattern#quote:

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

您的代码不起作用,因为$在正则表达式中具有特殊含义,并且由于String#split正则表达式作为参数,因此$不会将其解释为String "$",而是作为特殊元字符 $.


mpr*_*vat 8

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