'$' 的 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]);
}

当我像

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("\$")

最新更新