2

我正在尝试拆分一个字符串,例如: abc|aa|| 当我使用常规 string.split 时,我需要提供正则表达式。我尝试执行以下操作: string.split("|") string.split("\|") string.split("/|") string.split("\Q|\E")

他们都不工作......

有谁知道如何使它工作?

4

5 回答 5

2

我不知道你是怎么尝试的,但是

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
于 2013-09-22T15:55:02.040 回答
1

需要使用双反斜杠,因为反斜杠也是一个特殊字符。所以你需要转义转义字符。即\\|

于 2013-09-22T15:52:14.560 回答
0

|是正则表达式的特殊字符,因此必须对其进行转义,例如\|

反斜杠\是Java中的特殊字符,因此也必须转义

因此,必须做到以下几点才能达到预期的效果。

string.split("\\|")
于 2013-09-22T16:02:57.627 回答
0

|是一个特殊字符,因此您需要使用斜杠对其进行转义。尝试使用

string.split("\\|")

于 2013-09-22T15:55:26.163 回答
0

以下所有模式都可以拆分:"\\Q|\\E" "\\|" "[|]"当然后两者是可取的

于 2013-09-22T16:32:21.680 回答