我只是在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]);
}
我期待的输出如下:
Val:A
瓦尔:B
瓦尔:C
Val:D
但不是这样,我输出
Val: A$B$C$D
为什么?我在想它可能是内部对待的特殊输入,也可能是变量声明规则。
答案 0 :(得分:9)
方法String.split(String regex)
将正则表达式作为参数,因此$
表示EOL。
如果您想按字符$
拆分,可以使用
String arrStr[] = str.split(Pattern.quote("$"));
答案 1 :(得分:7)
你必须逃避“$”:
pip install wheel
答案 2 :(得分:4)
您已使用$
作为正则表达式进行拆分。该字符已经在“行尾”(refer this)的正则表达式中定义。因此,您需要从实际正则表达式中转义字符,并且拆分字符应为$
。
因此,在代码中使用str.split("\\$")
代替str.split("$")
答案 3 :(得分:3)
split()
方法接受类似于正则表达式的字符串(请参阅Javadoc)。在正则表达式中,保留$
字符(匹配“行尾”,请参阅Javadoc)。因此,你必须像Avinash写的那样逃避它。
String arrStr[] = str.split("\\$");
双反斜杠是为了逃避反斜杠本身。
答案 4 :(得分:1)
简单。保留“$”字符意味着您需要将其转义。
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]);
}
这应该可以正常工作。所以每当这样的事情发生时,逃避角色!