2015-05-19 36 views
0

我需要分割由“|”分隔的弹簧。当我使用String.split("|")它不会给我正确的结果。转义“|”登录java

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

我一直使用转义字符"\"尝试,但我从Eclipse中得到一个无效的转义序列错误。

我错过了什么?

回答

6

你要明白,有逃避这里的两个层次:

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

您是否希望图案\|正则表达式 - 但为了写,作为一个字符串文字,你需要躲避\,所以你最终:

split("\\|") 

另一种方法是使用类似Guava's Splitter这是更简单的使用,因为它没有把字符串作为正则表达式 - 尽管它允许你指定一个Pattern当你正则表达式:

Splitter splitter = Splitter.on('|'); 
... 
List<String> list = splitter.splitToList("1234|5678"); 
2
String.split("\\|") 

你想分割字符串\|,以逃避管道。但要将\|表示为字符串,则需要跳过\。所以你做"\\|"

3

|是正则表达式汉字意为空字符串,

所以,你需要逃避它,就像

"1234|5678".split("\\|");