我有一个示例银行帐号:
06101010100075911391740027
我想按照以下方式显示:
06 1010 1010 0075 9113 9174 0027
我尝试了以下代码:
<xsl:decimal-format name="european" decimal-separator="." grouping-separator=" "/>
<xsl:value-of select="format-number(06101010100075911391740027,'## #### #### #### #### #### 0000','european')"/>
但结果远非预期:
6 1010 1010 0075 9110 0000 0000
我该如何解决这个问题?
答案 0 :(得分:2)
为了拥有前导零,您需要使用0位符号而不是#:
<xsl:value-of select="format-number(06101010100075911391740027,
'00 0000 0000 0000 0000 0000 0000','european')"/>
然而,由于浮点舍入,这仍然导致最后一串9个零。您是否将此数字实际作为XSLT中的数字传递,或者它是字符串值?如果它是一个字符串值,你可以使用concat()和substring():
<xsl:variable name="an" select="'06101010100075911391740027'" />
<xsl:value-of select="concat(substring($an, 1, 2), ' ',
substring($an, 3, 4), ' ',
substring($an, 7, 4), ' ',
substring($an, 11, 4), ' ',
substring($an, 15, 4), ' ',
substring($an, 19, 4), ' ',
substring($an, 23, 4))" />
如果它真的被作为数字数据类型处理,我认为你唯一的选择可能是改变你的方法来代替它来处理它。
答案 1 :(得分:1)
#
中format-number()
的使用意味着该位置上的可能一个数字。但是,#
代替0
,您也可以使用<xsl:value-of select="format-number(06101010100075911391740027,'00 0000 0000 0000 0000 0000 ')"/>
,这意味着在该位置应始终一个数字。如果没有找到数字,它将显示0。
{{1}}
上面应该会给你正确的结果。