为啥单管道字符会混淆java拆分方法? [复制]

Posted

技术标签:

【中文标题】为啥单管道字符会混淆java拆分方法? [复制]【英文标题】:Why does single pipe character confuse java split method? [duplicate]为什么单管道字符会混淆java拆分方法? [复制] 【发布时间】:2013-09-17 16:09:01 【问题描述】:

尝试以下方法:

String[] = "abcde|12345|xyz".split("|");

结果不会像(至少我..)预期的那样。

使用任何其他字符似乎都可以。

String[] = "abcde,12345,xyz".split(",");

那么管道有什么特别之处呢?

【问题讨论】:

【参考方案1】:

Java String.split() 需要一个正则表达式,并且管道字符在正则表达式中具有除逗号之外的特殊含义。请尝试以下操作:

String[] = "abcde|12345|xyz".split("\\|");

【讨论】:

想出了一个 - 但会给出答案,因为它也包含解决方案。 对不起版主的“谢谢”评论,但我一直在努力寻找这个解决方案,终于在这里找到了......【参考方案2】:

split 方法需要一个正则表达式,而“|”是正则表达式世界中的特殊字符:http://www.tutorialspoint.com/java/java_string_split.htm

【讨论】:

啊哈!有趣的是默认使用正则表达式。谢谢。那么..如何逃避它来做我想做的事?哦,等一下,我明白了——需要转义反斜杠..这样:split("\\|")

以上是关于为啥单管道字符会混淆java拆分方法? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在android和java中将字符串拆分为句子? [复制]

为啥我的 jq / read / echo 管道会删除反斜杠?

如何在 Java 中拆分此字符串? [复制]

为啥字符串在Java中以“”开头? [复制]

Java:为啥 \t 转义字符与 toString() 不一致? [复制]

为啥开关(Java)会发生这种情况? [复制]