繁体   English   中英

在Java中的'|'周围拆分字符串 字符

[英]Splitting Strings in java around the '|' character

我有这个

String str = "a,pnp,a|pnp,lab2|pnp,a|pnp,lab2,utr,utr";
String[] strings = str.split("|");

此代码不会在'|'周围分割 字符,而是像

strings[0] == "a";
strings[1] == ",";

等等。

如何获得这个工作

strings[0] == "a,pnp,a"
strings[1] == "pnp,lab2"
...

split()使用正则表达式,并且| 为正则表达式OR保留,因此您需要对其进行转义:

String[] strings = str.split("\\|");

甚至更好:

String[] strings = str.split(Pattern.quote("|"));

采用

String[] strings = str.split("\\|");

您可以逃脱| 符号,如其他答案所示。 我个人建议下载Guava并使用Splitter 虽然这对于单个语句可能被认为是过大的,但是根据我的经验,这将是一个罕见的项目,而番石榴的各个组成部分都无法使其更具可读性。

如果可能,我个人会使用列表而不是数组,因此:

private static final Splitter PIPE_SPLITTER = Splitter.on('|');
...

// Or an immutable list if you don't plan on changing it afterwards
List<String> strings = Lists.newArrayList(PIPE_SPLITTER.split(str));

我可能对正则表达式过于过敏,但是我真的不喜欢使用处理正则表达式的API,除非我真的想使用保证它们的模式。

public String [] split(String regex)

围绕给定正则表达式的匹配项拆分此字符串。

该方法的工作方式就像通过调用具有给定表达式且限制参数为零的二参数拆分方法。 因此,结尾的空字符串不包括在结果数组中。

因此,您应该尝试String [] arrayOfStrings = str.split(“ \\ |”);

只需添加转义|的选项即可。 字符:

String[] strings = str.split("[|]");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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