Java 以管道符号作为分隔符拆分字符串
为什么在下面的例子中,输出是Java 以管道符号作为分隔符拆分字符串,java,string,split,Java,String,Split,为什么在下面的例子中,输出是[],而不是[1] String input="1|2|3"; String[] values= input.split("|"); System.out.println("[" + values[0] + "]"); // Output: [] 但是,如果我们更改分隔符,则输出为[1] String input="1;2;3"; String[] values= input.split(";"); System.out.println("[" + values[0
[]
,而不是[1]
String input="1|2|3";
String[] values= input.split("|");
System.out.println("[" + values[0] + "]");
// Output: []
但是,如果我们更改分隔符,则输出为[1]
String input="1;2;3";
String[] values= input.split(";");
System.out.println("[" + values[0] + "]");
// Output: [1]
尝试转义该角色:
String input="1|2|3";
String[] values= input.split("\\|");
System.out.println("[" + values[0] + "]");
因为
|
在正则表达式中有特殊的含义。您需要像这样转义:\\\\\\
,在Java中,您还必须转义反斜杠,这样您就可以得到\\\\\\
管道字符是一个析取运算符,这意味着它告诉正则表达式引擎选择其左右两侧的任一模式。在您的例子中,那些与任何内容匹配的空字符串。尝试在拆分时使用
\\\\\\\\\
而不是\
,因为您需要转义它
因此,您的代码将更改为:
String input="1|2|3";
String[] values= input.split("\\|");
System.out.println("[" + values[0] + "]");
必须正确转义字符“|”
String input="1|2|3";
String[] values= input.split("\\|");
System.out.println("[" + values[0] + "]");
管道字符相当于正则表达式中的逻辑or。如果确实要使用管道字符作为分隔符,则需要使用
\
对其进行转义,如中所示
String[]values=input.split(\\\\)
split方法接收一个正则表达式作为参数。管道是一个保留字符,有自己的用途(它表示或)
您可以对其进行转义(“\\\\\”
),或者,如果您使用的是Java 1.5+,则可以使用模式
input.split(Pattern.quote("|"));
split(String)
接受一个“regex字符串”,因此|
被解释为“regex or”,因此它不会分割任何内容。您应该通过转义|
并检查值的值是否会分割每个字符,以及初始空字符串来进行测试。这将不会编译,请检查您的代码。在java中,您需要双重转义,split(\\\\;”)
。这将无法编译,请检查您的代码。在java中,您需要双转义、拆分(\\\\)。@bmorris591答案已修改。对不起,我忘了!