【问题标题】:Java split(), use whole word containing a specific character as separatorJava split(),使用包含特定字符的整个单词作为分隔符
【发布时间】:2016-06-03 19:03:26
【问题描述】:
String string = "3 5 3 -4 2 3 ";

我想在这里使用split(),但我需要一个分隔符为-4。我不知道哪些数字是负数,我需要使用 split 将正数分组到单独的数组中。

有可能吗?

编辑:

我想使用:

String[] parts = string.split(????);

并接收

parts[0] = "3 5 3"
parts[1] = "2 3"

【问题讨论】:

  • 什么是slice()
  • 您的示例中的预期结果是什么?
  • for (String retval: Str.split("-\\d+")){ System.out.println(retval); }
  • here
  • here:P

标签: java regex string


【解决方案1】:

根据我在 cmets 中提到的,您可以使用 -\\d+ 进行拆分。 它找到所有有- 后跟任意位数的位置。如果需要,我们可以稍后修剪数组元素

Java 代码

String Str = new String("3 5 3 -4 2 3");
String[] x = Str.split("-\\d+");

for (String retval: x){
   System.out.println(retval.trim());
}

Ideone Demo

【讨论】:

    【解决方案2】:

    您可以使用replace 方法搜索给定字符串(在本例中为-4)并将其替换为您选择的分隔符,可能是竖线(|)。然后您可以使用 split 方法并使用现在插入的分隔符来拆分您的数组。

    string = string.replace(replaceString, "|");
    string[] parts = string.split('|');
    

    诚然,这是一个小环岛,但它快速、简单且有效。

    【讨论】:

      【解决方案3】:

      使用 StringUtils 你可以做这样的事情

      public static void main(String[] args) {
          String splitMe="123-457";
          String [] newArray=StringUtils.split(splitMe, "-4");
      
      
          for (String val:newArray){
              System.out.println(val.toString());
          }
      }
      

      第一个索引的输出为 123,第二个索引的输出为 57

      【讨论】:

      • 我投了反对票,因为您的答案仅适用于用户提供的 example。我认为问题不仅仅与特定字符串有关。否则,手动创建两个数组会更快,一个是“123”,另一个是“57”……而且,即使在这种情况下,我也认为不需要使用 StringUtils 来代替 String 的 split。跨度>
      • @vefthym 他正在演示如何使用 StringUtils - 这个答案是完全有效的。提问者需要做的就是换掉参数。
      • @JeremyKato 我不同意。请参阅 rock321987 的回答 (stackoverflow.com/a/37622489/2516301)。它适用于任何负数。您可能错过了 OP 的这一部分:“我不知道哪些数字是负数,我需要使用 split 将正数分组到单独的数组中。” -4 只是一个例子
      • @vefthym 我的唯一目的是展示如何使用 StringUtils 拆分方法并使用 -4 作为此示例的分隔符,正如他在他的问题中发布的那样。他只是在寻找一种工具,而这个示例仅提供了一个以 -4 用作分隔符的示例的见解。他可以使用这个示例来使用 StringUtils 拆分方法,并将 -4 替换为他想要的任何正则表达式。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-26
      相关资源
      最近更新 更多