我对Freemarker有问题。 我想从这句话中删除所有特殊字符,并在将来删除一些类似的句子:
BLA BLA RANDOM&,RANDOM BLA
特别是&,但是平台也使用HTML,因此使用以下代码:
> <#assign text1 = name?replace("[^a-zA-Z0-9. ]", "",'r')>
>${text1}
我得到:
BLA BLA RANMP AMP RANDOM BLA
我也在尝试类似的操作,它删除了&amp,但我还如何添加一些特殊的内容,如!@#$%^ 90,以防万一,在其中?
> <#assign text1 = name?replace('&,', '')>
答案 0 :(得分:0)
我不确定您需要过滤掉哪些字符或字符序列,但是根据您已有的内容,也许是这样:
${s?replace('&[a-zA-Z]+;', '', 'r')?replace('[^a-zA-Z0-9. ]', '', 'r')}
因此,这首先删除了&
之类的东西,然后仅保留了“安全”字符。
但是,至少在原则上,这是不完整的,因为HTML可以包含类似A
之类的内容,这仅表示A
,因此不应删除它,而应将其替换为{{1} } ...或者,它可能包含A
之类的标签,然后应将其转换为<b>foo</b>
,而不是foo
。不知道是否需要处理这些事情,但是如果是这样,则需要将字符串转换为纯文本,这不是一件小事,而FreeMarker对此没有内置的内容。