拆分字符串| java中的分隔符

Pre*_*exx 32 java string split

我有一个像这样的字符串: 1|"value"|;

我想拆分该字符串并选择|作为分隔符.

我的代码看起来像这样:

String[] separated = line.split("|");
Run Code Online (Sandbox Code Playgroud)

我得到的是一个包含所有字符作为一个条目的数组:

separated[0] = ""
separated[1] = "1"
separated[2] = "|"
separated[3] = """
separated[4] = "v"
separated[5] = "a"
...
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么?
我不能拆分一个字符串|吗?

Tal*_*han 76

|OR在RegEx中被视为一个.所以你需要逃避它:

String[] separated = line.split("\\|");
Run Code Online (Sandbox Code Playgroud)

  • 如果你的分隔符是动态的,`line.split("\\"+ separator)`将不适用于`;`或`,`.另一个解决方案是`line.split("["+ separator +"]")`,因为括号中的字符也被转义. (6认同)

Kev*_*vin 10

你必须逃避|它,因为它在正则表达式中具有特殊含义.看看这个split(..)方法.

String[] sep = line.split("\\|");
Run Code Online (Sandbox Code Playgroud)

第二个\用于逃避|,第一个\用于逃避第二个\:).


Yon*_*oni 5

方法的参数是一个正则表达式,您可以在此处split阅读。由于在正则表达式中具有特殊含义,因此您需要对其进行转义。代码如下所示(正如其他人已经展示的那样):|

String[] separated = line.split("\\|");
Run Code Online (Sandbox Code Playgroud)


小智 5

这是行不通的,因为你必须逃离管道 | 第一的。以下示例代码(位于 (http://www.rgagnon.com/javadetails/java-0438.html))显示了一个示例。

public class StringSplit {
  public static void main(String args[]) throws Exception{
    String testString = "Real|How|To";
    // bad
    System.out.println(java.util.Arrays.toString(
        testString.split("|")
    ));
    // output : [, R, e, a, l, |, H, o, w, |, T, o]

    // good
    System.out.println(java.util.Arrays.toString(
      testString.split("\\|")
    ));
    // output : [Real, How, To]
  }
}
Run Code Online (Sandbox Code Playgroud)