为什么我不能在Java中用$拆分字符串
我只是在EclipseIDE上涂鸦,并编写了以下代码为什么我不能在Java中用$拆分字符串,java,string-split,Java,String Split,我只是在EclipseIDE上涂鸦,并编写了以下代码 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]); } String str=新字符串(“A$B$C$D”); 字符串arrStr[]=str.split($); for(int
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]);
}
String str=新字符串(“A$B$C$D”);
字符串arrStr[]=str.split($);
for(int i=0;i
我期望的结果是:
瓦尔:A
瓦尔:B
瓦尔:C
Val:D但不是这个,我得到的输出是
Val:A$B$C$D
为什么?我在想,它可能在内部被视为一个特殊的输入,也可能类似于变量声明规则。您必须转义“$”:
方法
String.split(String regex)
将正则表达式作为参数,因此$
表示EOL
如果要按字符$
拆分,可以使用
String arrStr[] = str.split(Pattern.quote("$"));
您已将
$
用作拆分的正则表达式。该字符已在正则表达式中为“行尾”()定义。因此,您需要从实际的正则表达式中转义字符,并且拆分字符应该是$
因此,在代码中使用str.split(\\$”
而不是str.split($”
)方法split()
接受类似正则表达式的字符串(请参阅)。在正则表达式中,$
字符是保留的(匹配“行尾”,请参阅)。因此,正如阿维纳什所写,你必须逃离它
String arrStr[] = str.split("\\$");
双反斜杠是为了避开反斜杠本身。很简单。“$”字符是保留的,这意味着您需要转义它
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]);
}
String str=新字符串(“A$B$C$D”);
字符串arrStr[]=str.split(\\$);
for(int i=0;i
这应该行得通。所以无论什么时候发生这样的事情,都要逃离角色 为了避开美元符号而产生的一点开销;)您不必考虑如何转义任何字符=>更不容易出错。但是,如果我使用不同的字符,如“u”或“,”@Avinash:“u”和“,”都不是特殊的regexp字符,则拆分方法将起作用。他们被照原样对待。请阅读javadoc中的正则表达式:可能与
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]);
}