【问题标题】:String split question using "*"使用“*”的字符串拆分问题
【发布时间】:2009-08-20 18:53:51
【问题描述】:

假设有一个字符串...

String myString =  "my*big*string*needs*parsing";

我想要的只是将字符串拆分为 "my" 、 "big" 、 "string" 等。 所以我试试

myString.split("*");

返回 java.util.regex.PatternSyntaxException:在索引 0 附近悬挂元字符“*”

* 是正则表达式中的特殊字符,所以我尝试转义....

myString.split("\\*");

同样的例外。我想有人会知道一个快速的解决方案。谢谢。

【问题讨论】:

  • 你的权利 \* 确实有效,我从数组中使用它... myArray[x].split("\*");它抛出了一个异常,但如果我先把 myArray[x] 变成一个字符串然后运行它就可以了……谢谢你的回答:)
  • 我的意思是上面评论中的双\....

标签: java regex string


【解决方案1】:

split("\\*") 和我一起工作。

【讨论】:

    【解决方案2】:

    \ 在 Mac OSX 上的 Java 6 中无法实现转义,因为 \ 保留给 \b \t \n \f \r \'\"\\。你所拥有的似乎对我有用:

    public static void main(String[] args) {
        String myString =  "my*big*string*needs*parsing";
        String[] a = myString.split("\\*");
        for (String b : a) {
            System.out.println(b);
        }
    }
    

    输出:

    我的

    字符串
    需要
    解析

    【讨论】:

      【解决方案3】:
      【解决方案4】:

      myString.split("\\*"); 在 Java 5 上运行良好。您使用哪种 JRE。

      【讨论】:

      • 单斜杠不起作用; * 不是特殊字符。我想你打错了:)
      【解决方案5】:

      您也可以使用StringTokenizer

       StringTokenizer st = new StringTokenizer("my*big*string*needs*parsing", "\*");
       while (st.hasMoreTokens()) {
           System.out.println(st.nextToken());
       }
      

      【讨论】:

        【解决方案6】:

        发生这种情况是因为 split 方法采用正则表达式,而不是纯字符串。

        “*”字符表示匹配前一个字符零次或多次,因此单独指定是无效的。

        所以应该转义,像下面这样

        split("\\*")

        【讨论】:

          猜你喜欢
          • 2022-08-19
          • 1970-01-01
          • 1970-01-01
          • 2021-10-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-12-25
          相关资源
          最近更新 更多