拆分字符串以包含由空格表示的空值

时间:2016-07-07 18:09:24

标签: java string split

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

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

2 个答案:

答案 0 :(得分:0)

我对你的方法感到困惑。如果您只是尝试这样做,那么可以更简单地完成:

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

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

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

如果这是一个最小的示例,并且您实际上打算使用更复杂的正则表达式,请发布该正则表达式,我们可以开始使用它。

答案 1 :(得分:0)

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

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

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

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

为什么你的预期输出在" a1"之前的逗号之后没有空格? ?