为什么String.split(“$”)不起作用?

我有三个部分字符串,每个部分用$符号分隔
例如,

 String s = "abc$efg$xyz"; 

现在当我使用split方法拆分它时,如下所示:

 String values[] = s.split("$"); 

它的values数组包含整个字符串作为单个元素。

但是当我使用它时:

 String values[]=s.split("\\$"); 

它完美地发挥了我想要的意义
现在, values数组分别包含索引0,1和2上的abcefgxyz

我想知道为什么第一次split不起作用,因为我在使用split(" "); a single white space时使用了类似的split split(" ");

因为字符$是正则表达式中用于标记行尾的保留标记。 这就是为什么你必须使用\\逃避它

String.split采用正则表达式。

正则表达式中的$表示字符串的nd,因此如果要匹配文字$字符,则需要将其转义。

在您的示例中显示的$是在正则表达式中表示在java中的正则表达式中使用的字符串的结尾

它用于

 $ Checks if a line end follows 

所以你要使用\\