String text="2|919505485043|2013-08-08 12:57:50|2013-08-08 12:58:04|2013-08-08 12:58:08|ANSWER";
我想使用|
.I 分割字符串。我在 java 中有上面的字符串。当我使用
System.out.println(text.split("|").length);
我得到的结果是 82。这里可能出了什么问题。
String#split使用正则表达式作为参数。管道字符|
具有特殊含义(意思是 OR)防止 String 在每个 literal 内部被拆分|
。
应该逃脱
text.split("\\|").length
否则String
在确定长度时将使用完整的
String.split(String)
使用正则表达式,并且|
在正则表达式中具有特殊含义。
选项:
就我个人而言,我会选择后一种方法——我认为这实际上是一个String.split
使用正则表达式的设计缺陷,在调用代码时并不清楚。
如果您真的想使用String.split
,我肯定会Pattern.quote
向任何阅读代码的人说明您为什么要逃避它 - 只是 using"\\|"
不是很自我记录,IMO。
你忘记了转义字符,
text.split("\\\|");
你应该把\\
你忘了这个。
text.split("\\|")
public class Sstring {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String text="2|919505485043|2013-08-08 12:57:50|2013-08-08 12:58:04 |2013-08-08 12:58:08|ANSWER";
System.out.println(text.split("\\|").length);
String str[] = text.split("\\|");
for(String i:str){
System.out.println(i);
}
}
}
番石榴,像往常一样!
Splitter.on("|").split("your_text")
这将返回一个 Iterable。