gpt4 book ai didi

java - 为什么 split 方法不支持 $,* 等分隔符来分割字符串

转载 作者:搜寻专家 更新时间:2023-11-01 01:10:00 31 4
gpt4 key购买 nike

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#splitregex 作为参数,$ 不会被解释为字符串 "$",而是特殊的 meta character $。一个性感的解决方案是:

settings.split(Pattern.quote("$"))

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/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com