如何在字符串中的数字与单词和整数之间添加空格?

时间:2013-05-30 14:53:35

标签: java string integer space

有这样的字符串

  

“APM35 2FAST4YOU -5ABBA STEVE0.5& Tom”

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

String s = "APM35 2FAST4YOU -5ABBA STEVE0.5&Tom";
s = s.replaceAll("(\\d)([A-Za-z])", "\\1 \\2");
System.out.println(s);

我得到了这样的结果:

APM35 1 2AST1 2OU -1 2BBA STEVE0.5&Tom

我想把这个字符串作为结果:

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

4 个答案:

答案 0 :(得分:4)

你可以分两步完成:

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

答案 1 :(得分:1)

试试这个:

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

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

答案 2 :(得分:0)

抱歉,我写得太快,但我不妨问:你确定Java的正则表达式API能够识别一个组(\ 1和\ 2)吗?

因为似乎字符串的某些部分被实际的1和2替换,所以这可能不是正确的语法。

(似乎你只是检查数字后跟文字,而不是另一种方式。)

答案 3 :(得分:0)

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

(0.5不是整数,如果你只想要整数( - ?[0-9] +)应该就够了)

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