Java拆分字符串"^ | ^"

had*_*des 3 java regex

我有以下示例数据:

***^|^100^|^101^|^102^|^103^|^104^|^
Run Code Online (Sandbox Code Playgroud)

我希望用"^ | ^"拆分,结果将是:

***
100
101
102
103
104
Run Code Online (Sandbox Code Playgroud)

下面是我的示例代码,但未能获得预期结果,我是否误解了拆分模式?

String a = "***^|^100^|^101^|^102^|^103^|^104^|^105^|^106^|^107^|^108^|^";
String [] split ;

split = a.split("^|^");
for(int i=0; i<split.length; i++)
{
        System.out.println(split[i]);
}
Run Code Online (Sandbox Code Playgroud)

Uma*_*nth 12

这两个^|你需要转义特殊chatacters.

split = a.split("\\^\\|\\^");
Run Code Online (Sandbox Code Playgroud)


The*_*ind 12

Pattern.quote()对待所有的元字符的字符串文字/文字图案.^,|在正则表达式中有特殊意义.

这应该工作:

public static void main(String[] args) throws Exception {
    String s = "***^|^100^|^101^|^102^|^103^|^104^|^";
    String pattern = Pattern.quote("^|^");
    System.out.println(Arrays.toString(s.split(pattern)));

}
Run Code Online (Sandbox Code Playgroud)

O/P:

[***, 100, 101, 102, 103, 104]
Run Code Online (Sandbox Code Playgroud)

  • 这看起来比通常的反斜杠狂热要好得多.不过,我希望有一个split方法,它采用分隔符字符串,而不是正则表达式. (2认同)
  • 我在考虑更多可读性.我认为这不是那么昂贵.但是,人们可以把它一步,做`静态最终格局HAT_PIPE_HAT = Pattern.compile(Pattern.quote( "^ | ^"))`这给`HAT_PIPE_HAT.split(theString)`. (2认同)