import java.util.StringTokenizer;
class MySplit
{
public static void main(String S[])
{
String settings = "12312$12121";
StringTokenizer splitedArray = new StringTokenizer(settings,"$");
String splitedArray1[] = settings.split("$");
System.out.println(splitedArray1[0]);
while(splitedArray.hasMoreElements())
System.out.println(splitedArray.nextToken().toString());
}
}
在上面的示例中,如果我使用 $
拆分字符串,则它无法正常工作,如果我使用其他符号拆分,则它可以正常工作。
为什么会这样,如果它只支持正则表达式那么为什么它可以很好地用于 :
、、
、;
等符号。
最佳答案
$
在正则表达式中有特殊含义,并且由于 String#split
将 regex 作为参数,$
不会被解释为字符串 "$"
,而是特殊的 meta character $
。一个性感的解决方案是:
settings.split(Pattern.quote("$"))
Returns a literal pattern String for the specified String.
...另一种解决方案是通过添加 \\
来转义 $
:
settings.split("\\$")
重要说明:检查结果数组中是否确实包含元素非常重要。
当您执行 splitedArray1[0]
时,您可以获得 ArrayIndexOutOfBoundsException
如果没有 $
符号。我要补充:
if (splitedArray1.length == 0) {
// return or do whatever you want
// except accessing the array
}
关于java - 为什么 split 方法不支持 $,* 等分隔符来分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29891369/