我想知道为什么我不能将包含 | 的文本拆分为String中的分隔符。当我使用逗号等时,分割工作正常。
这是一个SSCE
package tests;
public class Tests {
public static void main(String[] args) {
String text1="one|two|three|four|five";
String text2="one,two,three,four,five";
String [] splittedText1 = text1.split("|");
String [] splittedText2 = text2.split(",");
for(String elem : splittedText1) System.out.println("text1="+elem);
for(String elem : splittedText2) System.out.println("text2="+elem);
}
}
任何想法为什么它不适用于“|” ??
答案 0 :(得分:5)
由于split(String regex)
需要regex
和|是一个元字符,你需要逃脱它。
String[] splittedText1 = splittedText1.split("\\|");
或者你可以简单地使用Pattern
class
正则表达式的编译表示。
String[] splittedText1 = splittedText1.split(Pattern.quote("|"));
答案 1 :(得分:4)
因为分割模式实际上是一个正则表达式。您需要转义|
,因为它在正则表达式的上下文中具有特殊含义(它标记了另一种选择):
String [] splittedText1 = text1.split("\\|");