逃避"|" 登录java

Sha*_*han 0 java string

我需要拆分一个由"|"分隔的弹簧.当我使用String.split("|")它时,不会给我正确的结果.

String[] arr = "1234|5678".split("|"); System.out.println(arr[1]); \\ This prints "1"

我已经尝试使用转义字符,"\"但是我从Eclipse中获得了一个无效的转义序列错误.

我错过了什么?

Jon*_*eet 6

您需要了解这里有两个级别的转义:

  • 字符串文字转义
  • 正则表达式转义

你想要一个带有模式的正则表达式\|- 但是为了把它写成一个字符串文字,你需要转义\,所以你最终得到:

split("\\|")
Run Code Online (Sandbox Code Playgroud)

另一种方法是使用像Guava这样的Splitter东西,它更易于使用,因为它不会将字符串视为正则表达式 - 尽管它允许您指定Pattern何时需要正则表达式:

Splitter splitter = Splitter.on('|');
...
List<String> list = splitter.splitToList("1234|5678");
Run Code Online (Sandbox Code Playgroud)