【问题标题】:java string split is not giving expected resultjava字符串拆分没有给出预期的结果
【发布时间】:2013-11-15 19:35:10
【问题描述】:

我正在尝试将一个字符串拆分为一个字符串 [],但我没有得到预期的结果。 这里有什么问题?

    String animals = "dog|cat|bear|elephant|giraffe";
    String[] animalsArray = animals.split("|");

我希望 AnimalArray 包含以下内容:

    animalsArray[0] = "dog"
    animalsArray[1] = "cat"
    animalsArray[2] = "bear"
    ...

但它只包含:

    animalsArray[0] = "d"
    animalsArray[1] = "c"
    animalsArray[2] = "b"
    ...

【问题讨论】:

    标签: java split arrays


    【解决方案1】:

    String.split()拆分正则表达式,而不仅仅是普通字符串,因此您必须转义“|” (因为它有特殊含义)并按如下方式进行:

    split("\\|")
    

    【讨论】:

    • 我建议每个人都不要理会编辑,直到他们尝试过并验证它是否有效。我在不到一分钟的时间里看到了 3 个不同的版本,只有一个应用了代码构成。
    • @JeroenVannevel 现已真正修复。 :)
    • 顺便说一句,对于您希望将其视为普通字符串(而不是正则表达式)的更复杂的字符串,请查看Pattern.quote
    【解决方案2】:

    split 方法以正则表达式为参数,| 有特殊含义。用反斜杠转义它,并为 Java 转义反斜杠本身:

    String[] animalsArray = animals.split("\\|");
    

    This page 列出 Java 正则表达式中的特殊符号。在“逻辑运算符”部分查找|

    【讨论】:

      【解决方案3】:

      尝试使用 \\|

      import java.util.Arrays;
      
      public class Main {
      
      public static void main(String[] args) {
          String animals = "dog|cat|bear|elephant|giraffe";
          String[] animalsArray = animals.split("\\|");
          System.out.println(Arrays.toString(animalsArray));
      }
      }
      

      控制台输出:

      [dog, cat, bear, elephant, giraffe]
      

      【讨论】:

      • 谢谢,这么简单:-)
      猜你喜欢
      • 2016-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-29
      • 1970-01-01
      相关资源
      最近更新 更多