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)", " "));
这个 (\d)\s(\d)
匹配由单个 space 分隔的两个数字。由于我们还需要在替换时保留 space 周围的数字,因此我们可以使用
等
获取捕获组
使用
line=line.replaceFirst("\s"," ")
我有以下字符串:
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)", " "));
这个 (\d)\s(\d)
匹配由单个 space 分隔的两个数字。由于我们还需要在替换时保留 space 周围的数字,因此我们可以使用 等
使用
line=line.replaceFirst("\s"," ")