You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在XSLT中拆分逗号分隔字符串以提取目标值0

问题原因

你的现有代码存在两个缺陷:

  1. 未处理字符串中的单引号,最终得到的结果会包裹单引号,不是纯0
  2. 当字符串仅包含两个值(如case three: 'T','0')时,第一次截取后的内容不存在第二个逗号,substring-before会返回空值。

解决方案

XSLT 2.0 及以上版本

直接使用tokenize函数拆分,逻辑更简洁:

replace(tokenize($inputString, ',')[2], '''', '')

逻辑说明:

  • 按逗号拆分字符串为序列,取下标为2的元素(XSLT序列下标从1开始)
  • 用replace函数移除元素中的单引号,直接得到纯0

XSLT 1.0 兼容版本

先移除所有单引号,再做截取,同时做边界兼容:

<!-- 先移除所有单引号 -->
<xsl:variable name="noQuoteStr" select="translate($inputString, '''', '')" />
<!-- 取第一个逗号之后的内容 -->
<xsl:variable name="afterFirstComma" select="substring-after($noQuoteStr, ',')" />
<!-- 判断是否存在第二个逗号 -->
<xsl:choose>
  <xsl:when test="contains($afterFirstComma, ',')">
    <xsl:value-of select="substring-before($afterFirstComma, ',')" />
  </xsl:when>
  <xsl:otherwise>
    <xsl:value-of select="$afterFirstComma" />
  </xsl:otherwise>
</xsl:choose>

逻辑说明:

  • 先通过translate函数移除所有单引号,避免引号干扰截取逻辑
  • 对只有两个值的场景做兼容,没有第二个逗号时直接返回第一个逗号后的全部内容
  • 你给出的三个测试用例均可正确返回0

内容的提问来源于stack exchange,提问作者MOz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 13:36:06