Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我不能在Java中用$拆分字符串_Java_String Split - Fatal编程技术网

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

为什么我不能在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

我只是在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 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]);
}