Java字符串拆分与多字符分隔符

Dav*_*mes 4 java string split character

我对Java很新,我认为这和其他语言一样.

对于字符串:

String line = "3::Daniel::Louis||##2::Leon: the Professional::1994||6::Jean::Reno||7::Gary::Oldman||8::Natalie::Portman||##3::Scarface::1983||9::Al::Pacino||10::Michelle::Pfeiffer";
Run Code Online (Sandbox Code Playgroud)

我想把它分开||##.

但:

for(String s : line.split("||##")) {
    System.out.println("|"+s+"|");
 }
Run Code Online (Sandbox Code Playgroud)

收益:

||
|3|
|:|
|:|
|D|
|a|
|n|
|i|
Run Code Online (Sandbox Code Playgroud)

...等

我在期待:

3::Daniel::Louis

Leon: the Professional
Run Code Online (Sandbox Code Playgroud)

...等

我究竟做错了什么?

gtg*_*ola 12

你必须逃避| 字符,因为它是逻辑OR的正则表达式字符

所以我会用

line.split("\\|\\|##"))
Run Code Online (Sandbox Code Playgroud)

请注意,您必须转义斜杠,这就是我使用的原因

\\|
Run Code Online (Sandbox Code Playgroud)

代替

\|
Run Code Online (Sandbox Code Playgroud)

逃避这个元字符

  • Nitpick:Java本身的含义并不重要.但它也是正则表达式语法中的"或",它们有一个完全独立的语言. (3认同)