Java 用两个 Space 替换一个被数字包围的 Space

Java Replace One Space Surrounded by Numbers, with Two Spaces

我有以下字符串:

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

该字符串在前两个数字之间有一个 space:367,881 和 1,092,781。其余的数字都被一个以上的space包围了。我只想向前两个数字添加一个额外的 space。

用替换添加两个 space 不起作用,因为它也会向其他数字添加额外的 space。

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

有什么方法可以将额外的 space 添加到仅由一个 space 分隔的两个数字?

应该这样做,使用单词边界元字符 (\b):

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

这仅适用于以下假设:您的字符串中没有由单个 space 分隔的非数字(例如字母)。如果你碰巧也有字母, 更正确。

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

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)", "  "));

Ideone Demo

这个 (\d)\s(\d) 匹配由单个 space 分隔的两个数字。由于我们还需要在替换时保留 space 周围的数字,因此我们可以使用

获取捕获组

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