用变量值

时间:2016-05-23 13:57:58

标签: java regex

我有一个带有prime-faces编辑器组件的页面来创建文档模型,这样模型就可以保存在DB中并用作模板,以便将来更容易地创建新文档。

问题在于遗留系统保存的旧模型未在编辑器中正确格式化,更具体地说,它忽略了左侧空格。

我发现如果我用" "替换空格"&nbsp",编辑器会显示空格,但我无法使用正确的正则表达式。

我需要做的是:获取所有大于" "的空格(例如" "" ")并将其替换为右"&nbsp"个数字。因此" "将替换为"&nbsp&nbsp"

使用以下正则表达式我可以达到超过1个空格的条件,但我不知道如何替换它。

 myString.replaceAll(" [\\s]+", "????");

这可能吗?或者我最好还想别的什么?

2 个答案:

答案 0 :(得分:3)

您可以使用此解决方案有条件地用等效数量的 个实例替换任何2个连续的空格:

String spaces = "1 2  3   4    1 5     end";
System.out.println(
    //                 | space followed by space
    //                 |        | or
    //                 |        | | space preceded by space
    spaces.replaceAll("\\s(?=\\s)|(?<=\\s)\\s", "&nbsp;")
);

<强>输出

1 2&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;1 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end

注意

这将留下单个空格,因为它似乎是你的意图。

答案 1 :(得分:1)

如果你的意图只是用nbsp替换每个空格,那么从正则表达式中删除第一个空格。

<强>代码

String myString = "this is   a test";
System.out.println(myString.replaceAll("[\\s]", "&nbsp;"));

<强>输出

this&nbsp;is&nbsp;&nbsp;&nbsp;a&nbsp;test