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

XSLT新手问题:如何移除点分隔三段字符串的中间部分

移除点分隔三部分字符串的中间部分(XSLT实现)

嘿,作为XSLT新手遇到这种字符串处理问题太正常了!我给你两种简单易懂的方案,帮你快速得到想要的结果:

方法一:基础字符串函数组合(兼容XSLT 1.0及以上)

这种方法不依赖高版本XSLT,用substring-before和substring-after就能搞定,逻辑特别直观:

  1. 提取第一个点(.)之前的内容
  2. 提取第二个点之后的内容
  3. 把两部分用点拼接起来

对应的XSLT代码示例:

<!-- 假设目标字符串在当前节点中,可替换成你的变量/节点路径 -->
<xsl:value-of select="concat(substring-before(., '.'), '.', substring-after(substring-after(., '.'), '.'))" />

拿你的示例"2120.555.11111"来说:

  • substring-before(., '.') 得到 "2120"
  • substring-after(substring-after(., '.'), '.') 先取第一个点后的"555.11111",再提取它里面点后的"11111"
  • 最后通过concat拼接成"2120.11111"

方法二:tokenize拆分法(XSLT 2.0及以上支持)

如果你的环境支持XSLT 2.0或更高版本,用tokenize拆分字符串会更清晰,可读性拉满:

  1. 把字符串按点(.)拆分成一个序列(类似数组)
  2. 直接取序列的第一个和第三个元素
  3. 用点拼接起来

对应的XSLT代码示例:

<xsl:variable name="split-parts" select="tokenize(., '\.')" />
<xsl:value-of select="concat($split-parts[1], '.', $split-parts[3])" />

这里tokenize(., '\.')会把"2120.555.11111"拆分成('2120', '555', '11111'),直接取第1和第3个元素拼接就搞定了。

小提示

如果没法保证输入一定是严格的三部分格式,可以加个简单判断避免出错:

<xsl:variable name="split-parts" select="tokenize(., '\.')" />
<xsl:if test="count($split-parts) = 3">
  <xsl:value-of select="concat($split-parts[1], '.', $split-parts[3])" />
</xsl:if>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 09:52:29