首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java用两个空格替换一个被数字包围的空间

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

Stack Overflow用户
提问于 2016-05-18 04:13:50
回答 3查看 434关注 0票数 4

我有以下字符串:

代码语言:javascript
复制
String line = "367,881 1,092,781  17,819     220   89,905   194,627    342    1,763,575";  

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

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

代码语言:javascript
复制
line  = line.replace(" ", "  ");

有什么方法可以实现在只有一个空格的两个数字中增加一个额外的空间呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-05-18 04:18:06

您可以使用以下regex:

代码语言:javascript
复制
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等获取捕获组。

票数 6
EN

Stack Overflow用户

发布于 2016-05-18 04:18:01

这应该使用边界元字符(\b)这个词来完成:

代码语言:javascript
复制
line = line.replaceAll("\\b \\b", "  ");

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

票数 0
EN

Stack Overflow用户

发布于 2016-05-18 04:19:43

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37290178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档