Java 如何在包含word和integer的字符串中的数字之间添加空格?

Java 如何在包含word和integer的字符串中的数字之间添加空格?,java,string,integer,space,Java,String,Integer,Space,有这样的绳子 “APM35 2 Fast4You-5ABBA STEVE0.5和Tom” 使用正则表达式,我并没有得到我想要的结果。如何在每个整数的前后添加空格? 代码: 我得到了这样的结果: APM35 1 2AST1 2OU -1 2BBA STEVE0.5&Tom 我想得到这个字符串作为结果: APM 35 2 FAST 4 YOU -5 ABBA STEVE 0.5 &Tom 抱歉,我写得太快了,但我还是要问:您确定Java的regex API能够识别组(\1和\2)

有这样的绳子

“APM35 2 Fast4You-5ABBA STEVE0.5和Tom”

使用正则表达式,我并没有得到我想要的结果。如何在每个整数的前后添加空格? 代码:

我得到了这样的结果:

APM35 1 2AST1 2OU -1 2BBA STEVE0.5&Tom
我想得到这个字符串作为结果:

APM 35 2 FAST 4 YOU -5 ABBA STEVE 0.5 &Tom

抱歉,我写得太快了,但我还是要问:您确定Java的regex API能够识别组(\1和\2)吗

因为字符串的一部分似乎被实际的1和2所取代,所以这可能不是正确的语法


(您似乎只是在检查后面跟文本的数字,而不是相反。)

对不起,我写得太快了,但我不妨问一下:您确定Java的正则表达式API能够识别组(\1和\2)

因为字符串的一部分似乎被实际的1和2所取代,所以这可能不是正确的语法


(看起来你只是在检查后面跟着文本的数字,而不是相反。)

你可以通过两个步骤来完成:

String s = "APM35 2FAST4YOU -5ABBA STEVE0.5&Tom";
//add a space after the numbers
String step1 = s.replaceAll("(-?\\d\\.?\\d*)([^\\d\\s])", "$1 $2");
//add a space before the numbers
String step2 = step1.replaceAll("([^0-9\\-\\s])(-?\\d\\.?\\d*)", "$1 $2");

您可以分两步完成:

String s = "APM35 2FAST4YOU -5ABBA STEVE0.5&Tom";
//add a space after the numbers
String step1 = s.replaceAll("(-?\\d\\.?\\d*)([^\\d\\s])", "$1 $2");
//add a space before the numbers
String step2 = step1.replaceAll("([^0-9\\-\\s])(-?\\d\\.?\\d*)", "$1 $2");

您可以使用表达式“(?[0-9]+(\[0-9]+)”

(0.5不是整数,如果只需要整数(-0-9]+)就足够了)


并将其替换为“\1”或“$1”(不知道哪一个适合Java)(前后空格)

您可以使用表达式“(?[0-9]+(\.[0-9]+)”

(0.5不是整数,如果只需要整数(-0-9]+)就足够了)

并将其替换为“\1”或“$1”(不知道哪一个适合Java)(前后空格)

尝试以下方法:

s.replaceAll("([^\\d-]?)(-?[\\d\\.]+)([^\\d]?)", "$1 $2 $3").replaceAll(" +", " ");
第一个regexp可以生成一些额外的空格,它们被第二个regexp删除。

尝试以下操作:

s.replaceAll("([^\\d-]?)(-?[\\d\\.]+)([^\\d]?)", "$1 $2 $3").replaceAll(" +", " ");

第一个regexp可以生成一些额外的空格,它们被第二个regexp删除。

IMO我不会用
String#replaceAll
来处理这个问题。@luigimendoza你会怎么做?@luigimendoza可以随意给我一些建议。我会一个字符一个字符地遍历
字符串,并定义数字之间的差异(请注意,它可以包含一个点
)和一个非数字
字符串
(因为
&
之类的符号不在
[a-Za-z]
内)。还有,你不知道哪一个可以排在第一位。@Luiggmendoza正则表达式会比较短。我不会用
String#replaceAll
来做这个。@Luiggmendoza你会怎么做?@Luiggmendoza可以随意给我一些建议,告诉我哪个会出现在你的脑海中。我会逐字符遍历
字符串
并定义数字之间的差异(请注意,它可以包含一个点
)和一个非数字
字符串
(因为
&
之类的符号不在
[a-Za-z]
内)。而且,你不知道哪一个可以先到。@LuiggiMendoza Regex会比较短。我认为应该是$1和$2。我认为应该是$1和$2。漂亮的代码,用
replaceAll(“{2,},”)
然后
replaceAll(“+”,”)删除所有额外的空格不是更好吗
Pretty code,用
replaceAll(“{2,},”)
然后
replaceAll(“+”,”)