【问题标题】:Split string to include null values represented by white space拆分字符串以包含由空格表示的空值
【发布时间】:2016-07-07 18:09:24
【问题描述】:

我正在尝试拆分包含空格的输入字符串,但我不想将其从拆分中删除,我想将其包含在拆分数组中。在这种情况下是否有更好的正则表达式或方法可以使用?

String data = "1     a1 b1  r5";
String splitData = data.split("\\s+");
for(String x : splitData){
  System.out.print(x + ", ");
}

Expected output: 1, , , , , ,a1, b1, , r5

【问题讨论】:

  • 为什么不转换成字符并循环遍历字符
  • "\\s+" 将任意数量(1 个或更多)的空格视为单个分隔符

标签: java string split


【解决方案1】:

我对您的方法感到困惑。如果这就是您想要做的所有事情,那么可以更简单地完成:

String input  = "1     a1 b1  r5";
String output = input.replace(" ", ", ");
System.out.println(output);

中间行只是用逗号后跟空格“,”替换空格字符“”。最终输出与您请求的输出匹配:

 1, , , , , a1, b1, , r5

如果这是一个最小的示例,而您实际上打算使用更复杂的正则表达式,请发布该正则表达式,我们可以着手处理。

【讨论】:

    【解决方案2】:

    如果你想创建一个令牌数组,只需使用:

    String[] sp = s.split(" ");

    但是,这将在第一个之后创建 4 个空项目,而不是 5 个。

    "a1" 和 "b1" 之间有 1 个空格,您预计那里有 0 个空项目。 “b1”和“r5”之间有 2 个空格,您希望那里有 1 个空项目。 “1”和“a1”之间有5个空格。为什么你期望那里有 5 个空项目而不是 4 个?

    为什么您的预期输出在“a1”前面的逗号后没有空格?

    【讨论】:

      猜你喜欢
      • 2013-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-13
      • 2021-07-30
      相关资源
      最近更新 更多