[英]string split in java is not working as expected giving wrong result
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.这可能是错的。
String#split使用正则表达式作为参数。 管道特征|
有特殊含义(意为OR)防止在每一个字面内部被分割字符串|
。
它应该被逃脱
text.split("\\|").length
否则,在确定长度时将使用完整的String
String.split(String)
使用正则表达式和|
在正则表达式中有特殊含义。
选项:
|
手动: text.split("\\\\|")
|
以编程方式: text.split(Pattern.quote("|"))
Splitter
类,以避免使用正则表达式 我个人会采用后一种方法 - 我认为它实际上是一个设计缺陷, String.split
根本就使用正则表达式,而且在调用代码时也不清楚。
如果你真的想使用String.split
,我肯定会使用Pattern.quote
让任何阅读代码的人都清楚你为什么要逃避它 - 只需使用"\\\\|"
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。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.