【问题标题】:Using split() with "|" character [duplicate]将 split() 与“|”一起使用字符[重复]
【发布时间】:2013-12-22 23:29:39
【问题描述】:

只是一个简单的问题:

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]

我想在管道字符处拆分以获得 [山姆,y,罗格斯]

知道我在这里做错了什么吗?

【问题讨论】:

  • "|"是一个特殊的正则表达式字符。使用String[] splitInput = input.split("\\|");
  • 请阅读您使用的方法的javadoc。
  • 对一个不值得的问题投了这么多票。
  • @user2812890:你可以接受别人给你的答案

标签: java split


【解决方案1】:

尝试其中一种

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

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

如果你想让| 简单的文字,你需要转义它。为此,您可以

  • 在正则表达式引擎中将\放在它之前,在字符串中将写为"\\|"
  • 使用字符类[...] 转义大多数正则表达式元字符,如split("[|]")
  • 或者用\\Q\\E 包围你的特殊字符,这将使每个字符(无论它是否特殊)都是简单的文字。此方案用于Pattern.quote("regex")

【讨论】:

  • @user2812890 没问题 :)
【解决方案2】:

你可以通过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】:

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

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

    【讨论】:

      【解决方案4】:

      你可以试试这个:

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

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

      【讨论】:

      • @user2812890:- 不客气!!!
      猜你喜欢
      • 2019-01-12
      • 2020-02-12
      • 2016-10-26
      • 1970-01-01
      • 1970-01-01
      • 2019-02-26
      • 2023-03-31
      • 2014-11-27
      • 2022-08-07
      相关资源
      最近更新 更多