Java用两个空格替换数字包围的一个空间

时间:2016-05-18 04:13:51

标签: java regex replaceall

我有以下字符串:

String line = "367,881 1,092,781  17,819     220   89,905   194,627    342    1,763,575";  

该字符串在前两个数字之间有一个空格:367,881和1,092,781。其余的数字被不止一个空间包围。我想为前两个数字添加额外的空格。

使用replace添加两个空格不起作用,因为它也为其他数字增加了额外的空间。

line  = line.replace(" ", "  ");

为两个仅由一个空格分隔的数字添加额外空间的方法是什么?

3 个答案:

答案 0 :(得分:5)

您可以使用以下正则表达式:

String line = "367,881 1,092,781  17,819     220   89,905   194,627    342    1,763,575";
System.out.println(line.replaceAll("(\\d)\\s(\\d)", "$1  $2"));

Ideone Demo

(\\d)\\s(\\d)匹配由单个空格分隔的两个数字。由于我们还需要在替换时保留空格周围的数字,我们可以使用$1等获取捕获组。

答案 1 :(得分:0)

这应该使用单词boundary metacharacter(\b):

line = line.replaceAll("\\b \\b", "  ");

这只能假设你没有在字符串中用单个空格分隔的非数字(例如字母)的情况。如果你碰巧也有字母,solution proposed by AKS更正确。

答案 2 :(得分:0)

使用 line=line.replaceFirst("\\s"," ")