String text="2|919505485043|2013-08-08 12:57:50|2013-08-08 12:58:04|2013-08-08 12:58:08|ANSWER";
我想使用|
拆分字符串。我在java中使用了上面的字符串。当我使用
System.out.println(text.split("|").length);
我得到了结果82.这里可能有什么问题。
答案 0 :(得分:11)
String#split使用正则表达式作为参数。管道符|
具有特殊含义(意味着OR),可防止在每个文字|
内部对字符串进行拆分。
它应该被转义
text.split("\\|").length
否则在确定长度
时将使用完整的String
答案 1 :(得分:8)
String.split(String)
使用正则表达式,|
在正则表达式中具有特殊含义。
选项:
就我个人而言,我会采用后一种方法 - 我认为这实际上是String.split
使用正则表达式的设计缺陷,并且在调用代码时也不清楚。
如果确实想要使用String.split
,我肯定会使用Pattern.quote
向所有阅读代码为何你的人说清楚“逃避它 - 仅仅使用"\\|"
并不是非常自我记录,IMO。
答案 2 :(得分:2)
你忘记了逃脱角色,
text.split("\\\|");
答案 3 :(得分:1)
您应该\\
忘记这一点。
text.split("\\|")
答案 4 :(得分:1)
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);
}
}
}
答案 5 :(得分:1)
番石榴,像往常一样!
Splitter.on("|").split("your_text")
这会返回一个Iterable。