从XML字符串中的特定模式获取子字符串

时间:2014-09-22 03:29:36

标签: xml xslt xslt-1.0

我有一个XML字符串,如下所示:

NNNANNNNN.NNNNNN

其中N是数值(可以长达10位),A是单个字母。

我需要的是在字母后面和十进制值之前获取字符串并返回带有前导零的值(最多10个字符和提取的值)

例如我有

123A123456.789 

然后结果将是

0000123456

任何人都可以使用XSLT 1.0指出我正确的方向。

2 个答案:

答案 0 :(得分:2)

指出正确的方向:

1)使用翻译功能将字母字符转换为某些已知的字符:

translate($myvalue,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','**************************')

2)使用“。”在substring-before()中包装。在“。”之前得到一切。

3)使用您在上面选择的字符(在本例中为“*”)在substring-after()中包装,以获取“*”之后的所有内容

答案 1 :(得分:2)

我会这样做:

<xsl:variable name="alpha" select="translate($yourstring, '0123456789.', '')" />
<xsl:variable name="int" select="substring-before(substring-after($yourstring, $alpha), '.')" />
<xsl:value-of select="format-number($int, '0000000000')" />
  

返回带前导零的值(最多10个字符   提取值)

不太清楚你的意思。如果提取的数字可能超过10个字符,并且您希望将其限制为最右边的10个数字,则使用:

<xsl:value-of select="substring(concat('0000000000', $int), 1 + string-length($int))" />

作为最后一步,而不是format-number()。

相关问题