如何在特定字符后仅提取数字?

时间:2018-03-05 20:36:30

标签: xml xslt xslt-1.0

有以下内容的节点。

<item is_json_array="yes">
  <name>Дополнительная услуга Количество IP-адресов - 1 Шт (Размещение сервера 1U #817)</name>
  <amount>156.48</amount>
  <taxrate>0</taxrate>
  <taxamount>0.00</taxamount>
  <notaxamount>156.48</notaxamount>
</item>

我需要撕掉name一个只包含#符号后的数字的子字符串。 817到第一个非数字字符或字符串的结尾。数字字符可以是任意数量的

1 个答案:

答案 0 :(得分:3)

由于您使用的是XSLT 1.0,因此您可以使用substring-after()translate()的组合来获取#之后的文本,还可以删除任何不需要的字符。

示例...

<xsl:template match="name">
  <xsl:value-of select="translate(substring-after(.,'#'),translate(substring-after(.,'#'),'0123456789',''),'')"/>
</xsl:template>

这里可以看到一个完整的工作示例:http://xsltfiddle.liberty-development.net/gWcDMes/1