26

在 Java 中,我试图拆分^字符,但它无法识别它。转义\^会引发代码错误。

这是一个特殊字符还是我需要做其他事情才能让它识别它?

String splitChr = "^";
String[] fmgStrng = aryToSplit.split(splitChr); 
4

5 回答 5

55

The^是 Java 正则表达式中的一个特殊字符 - 它表示“匹配输入的开头”。

您将需要使用"\\^". 需要双斜杠来转义\,否则 Java 的编译器会认为您正在尝试\^在字符串中使用特殊序列,类似于\n换行符。

\^不是一个特殊的转义序列,所以你会得到编译器错误。

简而言之,使用"\\^".

于 2012-05-22T02:45:58.817 回答
0

以上答案都没有任何意义。这是正确的解释。

  1. 众所周知,Java String 中的 ^ 不需要转义。
  2. 由于 ^ 是 RegulalExpression 中的特殊字符,它希望您传入 \^
  3. 我们如何在java中制作字符串\^?像这样 String splitstr = "\\^";
于 2013-02-27T18:57:06.853 回答
0

^ 匹配字符串的开头。您需要转义它,但在这种情况下,您需要转义它,以便正则表达式解析器理解这意味着转义转义,所以:

String splitChr = "\\^";
...

应该得到你想要的。

于 2012-05-22T02:45:41.173 回答
0

String.split()接受一个正则表达式。符号是一个特殊符号,^表示输入序列的开始。您需要逃脱它才能使其工作。你试图用它来转义它是对的,\但它是一个特殊字符来转义Java字符串中的东西,所以你需要用另一个\. 它会给你:

\\^
于 2012-05-22T02:46:01.857 回答
0

使用"\\^". 使用此示例作为指南:

    String aryToSplit = "word1^word2";
    String splitChr = "\\^";
    String[] fmgStrng = aryToSplit.split(splitChr); 
    System.out.println(fmgStrng[0]+","+fmgStrng[1]);

它应该打印“word1,word2”,有效地使用"\\^". 第一个斜线用于转义第二个斜线。如果没有双斜线,Java 会认为 ^ 是一个转义字符,就像换行符一样"\n"

于 2012-05-22T02:47:07.490 回答