我正在尝试拆分一个字符串,例如: abc|aa|| 当我使用常规 string.split 时,我需要提供正则表达式。我尝试执行以下操作: string.split("|") string.split("\|") string.split("/|") string.split("\Q|\E")
他们都不工作......
有谁知道如何使它工作?
我正在尝试拆分一个字符串,例如: abc|aa|| 当我使用常规 string.split 时,我需要提供正则表达式。我尝试执行以下操作: string.split("|") string.split("\|") string.split("/|") string.split("\Q|\E")
他们都不工作......
有谁知道如何使它工作?
我不知道你是怎么尝试的,但是
public static void main(String[] args) {
String a= "abc|aa||";
String split = Pattern.quote("|");
System.out.println(split);
System.out.println(Arrays.toString(a.split(split)));
}
打印出来
\Q|\E
[abc, aa]
有效分裂|
。这\Q ... \E
是一个正则表达式引用。它里面的任何东西都将作为文字模式匹配。
string.split("\|"); // won't work because \| is not a valid escape sequence
string.split("/|"); // will compile, but split on / and empty space, so between each character
string.split("|"); // will compile, but split on empty space, so between each character
// true alternative to quoted solution above
string.split("\\|") // escape the second \ which will resolve as an escaped | in the regex pattern
需要使用双反斜杠,因为反斜杠也是一个特殊字符。所以你需要转义转义字符。即\\|
|
是正则表达式的特殊字符,因此必须对其进行转义,例如\|
反斜杠\
是Java中的特殊字符,因此也必须转义
因此,必须做到以下几点才能达到预期的效果。
string.split("\\|")
|
是一个特殊字符,因此您需要使用斜杠对其进行转义。尝试使用
string.split("\\|")
以下所有模式都可以拆分:"\\Q|\\E"
"\\|"
"[|]"
当然后两者是可取的