Java 拆分方法中不接受哪些字符?

Java 拆分方法中不接受哪些字符?,java,string,Java,String,我有以下代码: String s = "100$ali$Rezaie" ; String[] ar = s.split("$") ; 以下字符在拆分中不起作用: . $ ^ split() 正如文档所说,split将regexp作为参数。诸如、$和^等字符在regexpes中具有特殊意义 这并不是说你不能用这些字符来分割字符串。不,您可以简单地转义regexp中的字符,使其行为“正常” split的参数是正则表达式,而不是单个字符。位于的页面列出了在正则表达式中具有特殊含义的所有

我有以下代码:

String s = "100$ali$Rezaie" ;
String[] ar = s.split("$") ;
以下字符在拆分中不起作用:

.   $    ^
split()

正如文档所说,
split
将regexp作为参数。诸如
$
^
等字符在regexpes中具有特殊意义

这并不是说你不能用这些字符来分割字符串。不,您可以简单地转义regexp中的字符,使其行为“正常”


split
的参数是正则表达式,而不是单个字符。位于的页面列出了在正则表达式中具有特殊含义的所有字符。

split()
方法接受正则表达式作为其输入。无论正则表达式有什么问题,split()都会有问题。
以下是Regex教程的文档:

像这样使用

String[] parts = str.split("\\$");

\实际上相当于一个\(第一个\作为字符串文本中的Java转义序列是必需的)。然后它是正则表达式中的一个特殊字符,意思是“按字面意思使用下一个字符,不要解释它的特殊含义”。

在Java
split
中采用正则表达式

阅读有关正则表达式元字符的信息。它们是:

反斜杠\、插入符号^、美元符号$、句号或点。, 竖条或管道符号|,问号?,星号 或星形*、加号+、开头括号(、结束语) 括号),以及开口方括号[,开口卷曲 支架{

在大多数情况下,您可以使用反斜杠转义这些字符。在Java中,您需要使用第二个反斜杠转义这些反斜杠。因此,为了转义元字符,您需要使用
\\

在你的例子中:

String[] ar = s.split("\\$") ;
该类列出了正则表达式在Java中的用法。如果在正则表达式语法中使用,则必须转义在其中找到的任何字符

如果要将该字符视为常规字符,则需要对其进行转义。

我们可以使用“\”(双斜杠)作为前缀,并可以拆分字符串

String s = "100$ali$Rezaie" ;
String[] ar = s.split("\\$") ;
for (String str : ar) {
System.out.println(str);
}

也许阅读Javadoc中的String.split()会给你答案。原因:
String s = "100$ali$Rezaie" ;
String[] ar = s.split("\\$") ;
for (String str : ar) {
System.out.println(str);
}