当前位置: 首页 > 知识库问答 >
问题:

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

傅树
2023-03-14

Java官方文档说明:

例如,字符串“boo:and:foo”使用以下表达式Regex Result生成以下结果:

{ "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<

为什么会这样?

共有3个答案

鲁英卫
2023-03-14

使用以下代码:

public static void main(String[] args) {
    String test = "A|B|C||D";

    String[] result = test.split("\\|");

    for (String s : result) {
        System.out.println(">" + s + "<");
    }
}
太叔何平
2023-03-14

使用正确的转义:string。拆分(“\\\\”)

或者,在Java5中,使用助手Pattern.quote(),它正是为此目的而创建的:

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

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

祝灼光
2023-03-14

你需要

test.split("\\|");

拆分使用正则表达式,在regex中|是表示OR运算符的元字符。您需要使用\转义该字符(在String中写成"\\",因为\也是String中的元字符,并且需要另一个\来转义它)。

你也可以使用

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

然后让模式。quote创建表示|的正则表达式的转义版本。

 类似资料:
  • 问题内容: 我无法从此字符串拆分值: 这是我当前的代码: | 输出量 预期产量 问题答案: 是正则表达式中的元字符。你需要对其进行转义:

  • 问题内容: Java官方文档指出: 它打印: 这与我的预期相去甚远: 为什么会这样呢? 问题答案: 你需要 使用正则表达式,并且在中 |是表示OR运算符的元字符。你需要使用来转义该字符\(使用String编写,因为它也是String文字中的元字符,并且需要另一个字符来对其进行转义)。 你也可以使用 并创建代表的正则表达式的转义版本|。

  • 问题 你想拆分一个字符串。 解决方案 使用 JavaScript 字符串的 split() 方法: "foo bar baz".split " " # => [ 'foo', 'bar', 'baz' ] 讨论 String 的这个 split() 方法是标准的 JavaScript 方法。可以用来基于任何分隔符——包括正则表达式来拆分字符串。这个方法还可以接受第二个参数,用于指定返回的子字符串数

  • 问题内容: 使用功能split拆分此String。这是我的代码: 当我尝试这样做时,spli只包含一个字符串。似乎Java在拆分时看不到“ ^”。有人知道如何用字母“ ^”分割此字符串吗? 编辑 解决了:P 问题答案: 这是因为需要一个正则表达式,而不是文字字符串。您必须转义,因为它在regex(字符串开头的锚点)中具有不同的含义。因此,拆分实际上是在第一个字符之前完成的,从而使您完整地返回了完整

  • 问题内容: 我正在尝试执行类似以下的拆分: 输出: 我要执行此拆分: 但我看到: 有什么办法可以摆脱括号吗?任何帮助表示赞赏。 问题答案:

  • 如何将过滤器列表拆分为单个过滤器元件?split2String在线程“main”java.util.regex中导致:异常。PatternSyntaxException:索引10或(|和)附近的未闭合组(