非法转义字符 "\("?

4

我需要转义 ( 字符,而不让输出变成其他内容,以下是任意输入和期望输出:

"a" + "\n" + "(" + "b"

期望输出:

a

b

非常感谢您的帮助!

//Here are the attempted work-arounds that failed
40      String test = "a"+"\n("+"b";
41      String[] testSplitted = test.split("\n"+"(");
42      System.out.println(testSplitted[0]);
43      System.out.println(testSplitted[1]);
    //  ("\n"+"\(")     ILLEGAL ESCAPE CHARACTER
    //  ("\n\(")        ILLEGAL ESCAPE CHARACTER
    //  ("\n(")         INVALID REGULAR EXPRESSION: UNCLOSED GROUP
    //  ("\n\\(")       Output: a \(b (Desired Output: a b)
    //  ("\n"+"[(]")    Output:
a [(]b  Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at inputhandler.InputHandler.main(InputHandler.java:43)
Java Result: 1

    //  ("\n"+"(")      Output:     
Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed group near index 2
(
^
at java.util.regex.Pattern.error(Pattern.java:1924)
at java.util.regex.Pattern.accept(Pattern.java:1782)
at java.util.regex.Pattern.group0(Pattern.java:2857)
at java.util.regex.Pattern.sequence(Pattern.java:2018)
at java.util.regex.Pattern.expr(Pattern.java:1964)
at java.util.regex.Pattern.compile(Pattern.java:1665)
at java.util.regex.Pattern.<init>(Pattern.java:1337)
at java.util.regex.Pattern.compile(Pattern.java:1022)
at java.lang.String.split(String.java:2313)
at java.lang.String.split(String.java:2355)
at inputhandler.InputHandler.main(InputHandler.java:41)
Java Result: 1
1个回答

21
为了转义字符(,在Java字符串中需要使用两个反斜杠,因为反斜杠本身是一个特殊字符,需要进行转义。所以变成:\\(

1
如果出现 \(,输出为: a \(b - user3025996
终于搞定了,非常感谢你的帮助,抱歉搞得有点乱 :s - user3025996
我有同样的问题,如果输入是 \( 那么输出会是 \(。你是怎么解决这个问题的? - gvo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接