为什么我不能用Java在$中拆分字符串

Avi*_*ash 5 java string-split

我只是涂鸦eclipse IDE并编写代码.

String str = new String("A$B$C$D");
String arrStr[] = str.split("$");
for (int i = 0; i < arrStr.length; i++) {
    System.out.println("Val: "+arrStr[i]);
}
Run Code Online (Sandbox Code Playgroud)

我期待输出如下:Val:A Val:B Val:C Val:D
但是不是这样,我输出为

Val: A$B$C$D 为什么?我在想它可能是内部对待的特殊输入,也可能是变量声明规则.

Uli*_*Uli 9

该方法String.split(String regex)将正则表达式作为参数,因此$意味着EOL.

如果您想按$可以使用的角色进行拆分

String arrStr[] = str.split(Pattern.quote("$"));
Run Code Online (Sandbox Code Playgroud)

  • 你不必考虑如何逃避任何字符=>不易出错. (3认同)
  • @Avinash:"_"和","没有特殊的正则表达式字符.他们按原样对待.请阅读正则表达式的javadoc:http://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html (2认同)

VWe*_*ber 7

你必须逃避"$":

arrStr = str.split("\\$");
Run Code Online (Sandbox Code Playgroud)