【发布时间】:2016-04-24 17:15:36
【问题描述】:
我正在调用一个名为 #renderwithfallback 的 Velocity 宏,我无法访问它的源代码。但是,此宏调用的结果输出包含前导空格,我无法删除它。
对宏的调用如下所示(注意前面有一个名为 $link.requestBaseURL 的变量):
$link.requestBaseURL#renderwithfallback({'content': $image, 'params':{'renderMode': 'urlBuilderStandard'}})#end
生成的输出如下所示:
http://local.london24.com:8080 /image/policy:1.312:1450097969/Yellow-and-orange-daffodils.jpg?f=default&h=200&w=300&$p$f$h$w=c7ebfa3
如您所见,由于 8080 和正斜杠之间存在空格,URL 已损坏。
我已多次尝试删除此空白,但没有任何效果。我尝试将 .trim() 和 .replace(" ","") 添加到宏调用的末尾,但这没有效果。我还尝试将宏调用分配给这样的 Velocity 变量:
#set($imageLocation = "#renderwithfallback({'content': $image, 'params':{'renderMode': 'urlBuilderStandard'}})#end")
然后在 $imageLocation 上调用 .trim() 方法,但这也不起作用。 #set 行直接打印出宏的输出,然后当我尝试打印出 $imageLocation 甚至 $imageLocation.trim() 时,它在网页上只是空白。
有谁知道我怎样才能摆脱空白?
【问题讨论】:
-
听起来很奇怪。正如我所看到的,您确保空格实际上来自该宏(否则我建议它一定是由其他原因引起的)。我想知道它是否是一个空白。我不确定
.trim()是否会删除任何空白字符。当然replace只是删除给定的字符串。因此,请尝试替换\s、\S之类的正则表达式,甚至是此问题中的其他字符:stackoverflow.com/questions/8255689/… -
感谢您的回复。我试过使用 \s 但这也没有效果。我还尝试了 /n 以防空格实际上是由换行引起的,但我也没有运气。
-
太糟糕了。所以,这里有另一种方法:首先尝试替换您知道实际存在的东西。只是为了防止你追逐幻影。说,
.replace("image", "this_works")。如果工作在正则表达式中尝试通配符。首先是.replace("./image", "/image"),然后是.replace("^./", "/")。但请注意,后者仅适用于该宏的输出,因为它查看字符串的开头。
标签: replace velocity trim removing-whitespace