繁体   English   中英

使用管道符号拆分字符串作为分隔符

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM