如何从字符串中替换所有单个字符?
问题描述:
<title>
<article_title>Land a b c d Band a /article_title></article_title>
</title>
<xsl:value-of select='replace(article_title,"(\s+.\s+)"," ")'/>
我期待Land Band,但是我得到了Land b d乐队。 有人可以更正替换功能吗?如何从字符串中替换所有单个字符?
答
使用:
replace(article_title, '(^[^ ]+)(.+\s+)([^ ]+)$', '$1 $3')
这是一个完整的转型:
<xsl:template match="/*">
<xsl:value-of select=
"replace(article_title, '(^[^ ]+)(.+\s+)([^ ]+)$', '$1 $3')"/>
</xsl:template>
</xsl:stylesheet>
当这种变换所提供的XML文档应用:
<title>
<article_title>Land a b c d Band</article_title>
</title>
想要的,正确的结果产生:
Land Band
Dimitre,谢谢。我可以在没有使用替换函数的情况下在xslt 1.0中获得此解决方案。 – sanjay 2012-02-01 04:16:29
@sanjay - 是的,XSLT 1.0是图灵完成的。然而,解决方案将更加复杂,因为XSLT 1.0缺乏RegEx支持。对于XSLT 1.0中的文本处理,我经常使用FXSL库,它提供了一套方便的模板/函数和高阶函数(HOF)。如果您有兴趣,请提出一个新问题,这次不要使用xslt-2.0标签(指定xslt-1.0标签是合适的)。 – 2012-02-01 04:23:35