使用 split( "|" ) 通过管道符号拆分 Java 字符串



Java 官方文档指出:

例如,字符串 "boo:and:foo" 使用这些表达式产生以下结果正则表达式结果:

{ "boo", "and", "foo" }"

这就是我需要它工作的方式。但是,如果我运行这个:

public static void main(String[] args){
        String test = "A|B|C||D";
        String[] result = test.split("|");
        for(String s : result){
            System.out.println(">"+s+"<");
        }
    }

它打印:

><
>A<
>|<
>B<
>|<
>C<
>|<
>|<
>D<

这与我的预期相去甚远:

>A<
>B<
>C<
><
>D<

为什么会这样?

你需要

test.split("\|");

split使用正则表达式,在正则表达式|是表示OR运算符的元字符。您需要使用 转义该字符("\"用字符串编写,因为也是字符串文字中的元字符,需要另一个才能转义它)。

您也可以使用

test.split(Pattern.quote("|"));

并让Pattern.quote创建表示|的正则表达式的转义版本。

使用正确的转义:string.split("\|")

或者,在 Java 5+ 中,使用为此目的而创建的帮助程序Pattern.quote()

string.split(Pattern.quote("|"))

它适用于任意输入字符串。当您需要引用/转义用户输入时非常有用。

使用以下代码:

public static void main(String[] args) {
    String test = "A|B|C||D";
    String[] result = test.split("\|");
    for (String s : result) {
        System.out.println(">" + s + "<");
    }
}

你也可以使用 apache 库来做这个:

StringUtils.split(test, "|");
您也可以

使用 .split("[|]") .

(我用这个代替了.split("\|"),这对我不起作用。

test.split("\|",999);

指定限制或最大值对于以下示例是准确的:"boo|||a"或"||嘘|" 或" |||"

但是test.split("\|");将为相同的示例返回不同长度的字符串数组。

使用参考:链接

split

() 方法将正则表达式作为参数

最新更新