Java替换字符串中除last之外所有出现的空格

时间:2019-09-16 05:41:52

标签: java regex

假设我有一个字符串:"10 000,00 EUR""1 000 000,00 EUR"

我想从字符串中删除除最后一个空格以外的所有空格,因此结果将类似于:"10000,00 EUR""1000000,00 EUR"

此刻我有这样的东西:

String myString = "1 000 000 EUR";

myString = myString.replace("\\s(?=\\s*\\s)", "")

我假设我应该使用一个正则表达式超前表达式,该表达式与一个空格匹配,该空格后面也有另一个空格?解决问题的任何答案将不胜感激。

2 个答案:

答案 0 :(得分:1)

尝试这样的事情:

Regex r = new Regex("\\s");
myString = myString.replace(r, "");

,如果要确保它不是最后一个空格:

Regex m = new Ragex("\\s\\S+^"); \\means: tha last space.
myString = myString.replace(m, "@@@@"); \\escape the last space.
myString = myString.replace(r, ""); \\delete the other spaces.
myString = myString,replace("@@@@", " "); \\put back the last space on place we marked.

例如,该过程是:

myString =“ 100 00 0 ER”

=>"100 00 0@@@@ER" 
=>"100000@@@@ER"
=>"100000 ER"

祝你好运!

答案 1 :(得分:0)

类似的东西:

[^\S\r\n](?=[0-9])

该想法是匹配空格字符,除了换行符或回车符后跟数字。

请参阅this的答案以了解双负[^\S\r\n]的工作原理。

Demo