使用split()和“|”字符

时间:2013-12-05 20:23:14

标签: java split

只是一个简单的问题:

String input = "sam|y|rutgers";
String[] splitInput = input.split("|");
System.out.println(Arrays.toString(splitInput));

Output:
[, s, a, m, |, y, |, r, u, t, g, e, r, s]

我想拆分管道中的字符来获取 [SAM,Y,罗格斯]

知道我在这里做错了吗?

4 个答案:

答案 0 :(得分:8)

尝试使用其中一个

  • split("\\|")
  • split("[|]")
  • split(Pattern.quote("|"))
  • split("\\Q|\\E")

split方法使用正则表达式作为参数,而正则表达式|表示OR,因此您当前的表达式表示空字符串空字符串

如果你想让|简单的文字,你需要逃避它。要做到这一点,你可以

  • \放在它前面的正则表达式引擎中,其中String将被写为"\\|"
  • 使用字符类[...]来逃避大多数正则表达式元字符,例如split("[|]")
  • 或用\\Q\\E围绕您的特殊字符,这将使每个字符(无论是否特殊)简单文字。此解决方案用于Pattern.quote("regex")

答案 1 :(得分:1)

你可以试试这个:

String[] str= input.split("\\|");

"|"是一个特殊字符(OR),因此您需要使用slash \\来转义它。正如已回答here 未转义|被解析为正则表达式,意思是“空字符串或空字符串”,

答案 2 :(得分:1)

您可以StringTokenizer

执行此操作
StringTokenizer st2 = new StringTokenizer(input , "|");

    while (st2.hasMoreElements()) {
        System.out.println(st2.nextElement());
    }

默认分隔符为" "空格。

StringTokenizer st2 = new StringTokenizer(input );//it will split you String by `" "` space

答案 3 :(得分:1)

\ Q& \ E是正则表达式引用。

String[] splitInput = input.split("\\Q|\\E");