【问题标题】:Splitting string java拆分字符串java
【发布时间】:2013-01-08 21:01:18
【问题描述】:

我刚刚注意到 .split() 函数有些奇怪,如果我通过 |对它来说,它将字符串拆分为字符。我测试了它:

String s = "Hiya there | how are you | im fine thanks";
for(String str : s.split("|")) {
    System.out.println(str);
}

它把它分成不同的字符。我试过反斜杠,它没有用。

有谁知道如何将其实际拆分为 | ?

【问题讨论】:

标签: java string split


【解决方案1】:

String#split 接受正则表达式作为参数,其中| 具有特殊含义,用于alternation

你可以用两种方法让自己摆脱困境:-

  1. 转义|。请记住,在 Java 中您需要使用 双反斜杠:-

    s.split("\\|");
    
  2. 使用字符类:-

    s.split("[|]");
    

在字符类中,除- 之外的任何字符,在中间使用时也没有任何特殊含义。所以,[|] 只是一个 | 而已。

是的,您还需要在@JanDvorak 在 cmets 中指定的 字符类 中转义 ]

【讨论】:

  • 请注意,] 也需要在字符类中转义
【解决方案2】:

| 是正则表达式世界中的元字符,为了将其视为普通字符,您必须使用反斜杠 \\| 对其进行转义:

public static void main(String...args) throws ParseException{
        String s = "Hiya there | how are you | im fine thanks";
        for(String str : s.split("\\|")) {
            System.out.println(str);
        }
    }

【讨论】:

    【解决方案3】:

    我总是在正则表达式中使用方括号,因为随着新需求的出现它们通常会变大,并且与反斜杠相比,方括号更容易理解。

    public static void main(String...args) throws ParseException{
        String s = "Hiya there | how are you | im fine thanks";
        for(String str : s.split("[|]")) {
            System.out.println(str);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多