拆分并计算xslt 1.0中的字符串数

时间:2013-09-03 15:00:12

标签: xslt xslt-1.0

我有以下字符串,

788565591,1,444,0,15956,555,126.99,15956,666,0,15956,777,101.66,15956
788565591,1,444,0,,555,126.99,,,0,15956,777

我正在尝试编写一个xslt模板来查找字符串中的逗号数量。根据计数,我需要添加/删除更多以将长度标准化为32。

请建议/以代码的形式给我一些想法。

1 个答案:

答案 0 :(得分:3)

假设当前上下文节点是您要处理其值的那个,那么

<xsl:variable name="numCommas"
              select="string-length() - string-length(translate(., ',', ''))" />

会给你字符串中逗号的数量(字面意思是它计算字符串的长度减去-string-with-all-commas-removed的长度)。如果你有一个包含32个逗号的变量(这可能是在模板外定义的全局变量):

<xsl:variable name="thirtyTwoCommas"
              select="',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'" />

然后您可以使用substring($thirtyTwoCommas, $numCommas + 1)获取一个字符串,其中包含您需要添加到原始字符串的额外逗号数量,以使其达到32.如果原始字符串中有32个或更多逗号,则这将是空的。