如何在 | 上拆分字符串Java中的(管道)[重复]

Posted

技术标签:

【中文标题】如何在 | 上拆分字符串Java中的(管道)[重复]【英文标题】:How to split a string on | (pipe) in Java [duplicate] 【发布时间】:2011-10-04 16:38:20 【问题描述】:

我有一个类似|serialNo|checkDelta?|checkFuture?|checkThis?| 的字符串。

现在我使用下面的代码来分割字符串。

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

但是当我使用它时,我得到包含每个字符的字符串数组,而我需要包含 serialNocheckDelta?checkFuture?checkthis? 等字母的字符串。

如何获得这些?我错过了什么吗?

【问题讨论】:

【参考方案1】:

您必须转义管道字符(split 将正则表达式作为参数,因此“|”是 control character):

str.split("\\|");

请注意:结果数组的开头包含一个空字符串,因为您有“|”在字符串的开头。

【讨论】:

+1 表示要提到的好东西 等价正则表达式的另一种语法是:"[|]" -- 管道在字符类中失去了意义。【参考方案2】:

使用 StringTokenizer..

String str="|serialNo|checkDelta?|checkFuture?|checkThis?|"
StringTokenizer st=new StringTokenizer(str,"|",false);
String s1 = st.nextToken();
String s2 = st.nextToken();
String s3 = st.nextToken();
String s4 = st.nextToken();

s1=序列号

s2=checkDelta?

s3=checkFuture?

s4=checkThis?

请参阅 javadocs 以了解有关 StringTokenizer 的信息

http://download.oracle.com/javase/1.4.2/docs/api/java/util/StringTokenizer.html

【讨论】:

【参考方案3】:

您正在使用一个特殊字符,必须对其进行转义:str.split("\\|");

【讨论】:

以上是关于如何在 | 上拆分字符串Java中的(管道)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在Python中的正则表达式上拆分字符串[重复]

在逗号上拆分字符串并忽略双引号中的逗号[重复]

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

如何将字符串中的“\t”拆分为两个单独的字符“\”和“t”? (如何拆分转义序列?)[重复]

C ++中的拆分字符串[重复]

如何拆分数组中的字符串[重复]