[英]Splitting a String with the pipe symbol as delimiter
为什么在下面,输出是[]
而不是[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中你也必须逃避反斜杠,所以你最终得到了\\\\|
管道字符是一个析取运算符,这意味着它告诉正则表达式引擎在其左侧和右侧选择任一模式。 在你的情况下那些空字符串匹配任何东西。
split
方法接收正则表达式作为参数。 管道是具有其自身目的的保留字符(表示or
)。
您可以将其转义( "\\\\|"
),或者,如果您使用的是Java 1.5+,则可以使用Pattern.quote("|")
如下所示:
input.split(Pattern.quote("|"));
尝试使用\\\\|
而不是|
当你分开时,你需要逃避它。
所以你的代码将改为:
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] + "]");
管道字符等同于逻辑或正则表达式。 如果你真的想使用管道字符作为分隔符,你需要使用\\
来转义它
String[] values= input.split("\\|");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.