首页 > 解决方案 > 字符串中的子字符串匹配

问题描述

我是 XSL 的新手,我在一个变量中有一个主字符串,在另一个变量中有一个子字符串。

我已经提到包含实现这一功能的功能,但对我没有帮助。:(

前任:

     <xsl:variable name="mainstring" select="ZXVFABEMABCD"/>
     <xsl:variable name="substring" select="ABCD" />
          <xsl:if test="contains($mainstring,$stubstring)">
                do some operation

即使像“ZBCD”这样的子字符串,上述条件也始终为真,因为不管字母的顺序如何,contains() 函数都会为字母的存在返回 true。

请帮助我找到完全存在的子字符串以检查条件。

只要角色出现,总是会变为真。

标签: xmlsubstringxslt-1.0

解决方案


您忘记将字符串放在引号中。因为像上面一样,“字符串”被视为 QNames(元素名称)并返回空(除非它们偶然出现在 XML 中),这被解释为空字符串。如果第二个参数是空字符串,则contains返回 TRUE。

添加引号可以解决问题,contains(...)并将按预期工作:

<xsl:variable name="mainstring" select="'ZXVFABEMABCD'"/>
<xsl:variable name="substring" select="'ABCD'" />
<xsl:if test="contains($mainstring,$substring)">
        do some operation
</xsl:if>

推荐阅读