Java FTL将多个连续连字符替换为一个

Java FTL将多个连续连字符替换为一个,java,freemarker,Java,Freemarker,我有一个字符串,看起来像这样: 某物-----另一物 我想用FTL的一个破折号替换多个破折号 因此,预期产出为: 另一件事 如果我们知道确切的连字符数,替换将起作用,但我不确定在我的情况下会有多少连字符。使用?替换('-+','-','r')。'r'表示它使用正则表达式,-+表示正则表达式中的一个或多个-字符。使用?替换('-+','-','r')。'r'表示它使用正则表达式,-+表示正则表达式中的一个或多个-字符 [#assign str = "a-b--c---d----e----

我有一个字符串,看起来像这样:

某物-----另一物
我想用FTL的一个破折号替换多个破折号

因此,预期产出为:

另一件事

如果我们知道确切的连字符数,替换将起作用,但我不确定在我的情况下会有多少连字符。

使用
?替换('-+','-','r')
'r'
表示它使用正则表达式,
-+
表示正则表达式中的一个或多个
-
字符。

使用
?替换('-+','-','r')
'r'
表示它使用正则表达式,
-+
表示正则表达式中的一个或多个
-
字符

[#assign str = "a-b--c---d----e-----f"]

[#function reduceHyphens text]
    [#list 1..text?length as i]
        [#if text?contains("--")]
            [#local text = text?replace("--","-")]
        [#else]
            [#break]
        [/#if]
    [/#list]
    [#return text]
[/#function]

${reduceHyphens(str)}
输出:a-b-c-d-e-f

输出:a-b-c-d-e-f