String [] split of string [] array - ERROR

时间:2014-03-09 19:30:33

标签: java count

这是我的代码:

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 []数组进行拆分。 感谢。

5 个答案:

答案 0 :(得分:2)

split以正则表达式作为参数。 +是一个正则表达量词字符,用于匹配一个或多个字符,因此需要进行转义才能按字面意思进行评估

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

答案 1 :(得分:1)

+在正则表达式中有特殊含义,所以你必须逃脱它。试试这个:

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

答案 2 :(得分:1)

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

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

您可能希望阅读有关正则表达式的oracle's documentation以获取更多信息。

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

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

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