1

我有一个示例银行帐号:

06101010100075911391740027

我想显示如下:

06 1010 1010 0075 9113 9174 0027

我尝试了以下代码:

<xsl:decimal-format name="european" decimal-separator="." grouping-separator="&#160;"/>
<xsl:value-of select="format-number(06101010100075911391740027,'##&#160;####&#160;####&#160;####&#160;####&#160;####&#160;0000','european')"/>

但结果却出乎意料:

6 1010 1010 0075 9110 0000 0000

我该如何解决?

4

2 回答 2

2

为了有前导零,您需要使用 0 位符号而不是 #:

<xsl:value-of select="format-number(06101010100075911391740027,
        '00&#160;0000&#160;0000&#160;0000&#160;0000&#160;0000&#160;0000','european')"/>

然而,由于浮点舍入,这仍然会在末尾产生一串 9 个零。您是否将这个数字作为 XSLT 中的数字实际传递,或者它是一个字符串值?如果它是一个字符串值,你可以只使用 concat() 和 substring():

<xsl:variable name="an" select="'06101010100075911391740027'" />
<xsl:value-of select="concat(substring($an, 1, 2), '&#160;',
                             substring($an, 3, 4), '&#160;',
                             substring($an, 7, 4), '&#160;',
                             substring($an, 11, 4), '&#160;',
                             substring($an, 15, 4), '&#160;',
                             substring($an, 19, 4), '&#160;',
                             substring($an, 23, 4))" />

如果它真的被作为数字数据类型处理,我认为你唯一的选择可能是改变你的方法来处理它作为一个字符串。

于 2013-09-18T11:26:42.320 回答
1

#in的使用format-number()意味着该位置可能有一个数字。但是#你也可以使用来代替0,这意味着在那个位置应该总是一个数字。如果没有找到数字,它将显示 0。

<xsl:value-of select="format-number(06101010100075911391740027,'00&#160;0000&#160;0000&#160;0000&#160;0000&#160;0000&#160')"/>

上面应该给你正确的结果。

于 2013-09-18T11:24:07.053 回答