有这样的字符串
“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
答案 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的)(前后空格)