Java String.Split-意外行为
我正在尝试如下拆分一个字符串Java String.Split-意外行为,java,string,Java,String,我正在尝试如下拆分一个字符串 String string = "mike|ricki" 如果我执行以下string.split(“|”)操作,我希望得到一个由两个元素组成的数组,“mike”和“ricki”。相反,我得到了以下信息 [,m,i,k,e,|,r,i,c,k,i] 我在这里做错了什么吗?是的。管道字符|是正则表达式中的特殊字符。您必须使用\对其进行转义。转义字符串应该是\\\\\,但在Java中,反斜杠\是文本字符串中转义的特殊字符,因此必须对其进行双重转义并使用\\\\\: St
String string = "mike|ricki"
如果我执行以下string.split(“|”)
操作,我希望得到一个由两个元素组成的数组,“mike”
和“ricki”
。相反,我得到了以下信息
[,m,i,k,e,|,r,i,c,k,i]
我在这里做错了什么吗?是的。管道字符
|
是正则表达式中的特殊字符。您必须使用\
对其进行转义。转义字符串应该是\\\\\
,但在Java中,反斜杠\
是文本字符串中转义的特殊字符,因此必须对其进行双重转义并使用\\\\\
:
String[] names = string.split("\\|");
System.out.println(Arrays.toString(names));
对。管道字符
|
是正则表达式中的特殊字符。您必须使用\
对其进行转义。转义字符串应该是\\\\\
,但在Java中,反斜杠\
是文本字符串中转义的特殊字符,因此必须对其进行双重转义并使用\\\\\
:
String[] names = string.split("\\|");
System.out.println(Arrays.toString(names));
如果您阅读Java文档,它会说它可以接收正则表达式作为输入
管道字符\
是正则表达式中的一个特殊字符,因此如果要将其用作文本,则必须像\\\\\
那样对其进行转义
因此,您的代码必须是:
String[] splitted = string.split("\\|");
编辑:更正了示例代码。如果您阅读Java文档,它会说它可以接收正则表达式作为输入
管道字符\
是正则表达式中的一个特殊字符,因此如果要将其用作文本,则必须像\\\\\
那样对其进行转义
因此,您的代码必须是:
String[] splitted = string.split("\\|");
编辑:更正了示例代码。String.split采用正则表达式。管道字符在正则表达式中有特殊含义,因此它与您期望的不匹配 请尝试使用
String.split(\\\\”)
反斜杠告诉正则表达式将管道视为文字字符。String.split采用正则表达式。管道字符在正则表达式中有特殊含义,因此它与您期望的不匹配 请尝试使用
String.split(\\\\”)
反斜杠告诉regex将管道视为文字字符。-1:在您在答案末尾添加了非常奇怪的代码行之前,您的答案是正确的=\。您需要转义正则表达式,而不是应用正则表达式的字符串。您不需要更改原始字符串,只需要在拆分中匹配正则表达式!1:你的答案是对的,直到你在答案的末尾加上那行奇怪的代码=\。您需要转义正则表达式,而不是应用正则表达式的字符串。您不需要更改原始字符串,只需要在拆分中匹配正则表达式!我会改正的