【问题标题】:String[] split of string[] array - ERROR字符串 [] 数组的字符串 [] 拆分 - 错误
【发布时间】:2014-03-09 19:30:32
【问题描述】:

这是我的代码:

String mensaje = "/server###33+32";

String[] msg = mensaje.split("###");
String[] numeros = null;


if (msg[1].contains("+")){
     numeros = msg[1].split("+");    <== ERROR HERE
}

这是我的异常错误:

Exception in thread "Thread-0" java.util.regex.PatternSyntaxException: Dangling meta character '+' near index 0
    at java.util.regex.Pattern.error(Unknown Source)
    at java.util.regex.Pattern.sequence(Unknown Source)
    at java.util.regex.Pattern.expr(Unknown Source)
    at java.util.regex.Pattern.compile(Unknown Source)
    at java.util.regex.Pattern.<init>(Unknown Source)
    at java.util.regex.Pattern.compile(Unknown Source)
    at java.lang.String.split(Unknown Source)
    at java.lang.String.split(Unknown Source)
    at juannmcc.servidor.Cliente.run(Cliente.java:49)

需要帮助,因为我不知道如何对 String[] 数组的 String[] 数组进行拆分。 谢谢。

【问题讨论】:

  • 用 '\\+' 转义你的 '+'...它会起作用的

标签: java count


【解决方案1】:

split 将正则表达式作为其参数。 + 是一个正则表达式量词字符,用于匹配一个或多个字符,因此需要转义才能逐字计算

numeros = msg[1].split("\\+");

【讨论】:

    【解决方案2】:

    +在正则表达式中有特殊的含义,所以你要转义它。试试这个:

    numeros = msg[1].split("\\+ ");
    

    【讨论】:

      【解决方案3】:

      “+”字符是用于制定正则表达式的元字符。如果你想从字面上引用它,你需要逃避它。 '.', '*', '[', ']' 等其他几个字符也是如此。

      if (msg[1].contains("+")){
           numeros = msg[1].split("\\+");    // this should work
      }
      

      您可能想阅读oracle's documentation 以了解更多关于正则表达式的信息。

      【讨论】:

        【解决方案4】:

        您需要在正则表达式中转义 +。正则表达式中的+ 用于表示“一个或多个前面的元素”并且您没有前面的元素,因此会出错。

        numeros = msg[1].split("\\+");
        

        【讨论】:

          【解决方案5】:

          如果您不想使用\\,另一种棘手的方法:

          numeros = msg[1].split("[+]");
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-02-22
            • 1970-01-01
            • 2016-04-01
            相关资源
            最近更新 更多