几天前我在XSLT中提出了替换空格的类似问题,但现在我在同一个代码中遇到了另一个问题。
先前被问到: 所以我必须从我们的应用程序导出数据,现在为了这样做我编写了XML代码,并且导出某些字段需要格式化为我使用XSLT。现在这里的问题是在我的SQL SERVER数据库中我有一个联系号码字段,其中一些号码的格式为1234567890,而有些则有空格123 456 7890.所以现在当我使用下面提到的xslt代码时,一切正常预期如果该字段有空格但在没有空格时会混乱。我知道我可以直接在数据库中进行更改,但这不是永久的解决方案。如果有人能提供一些指导,那就太好了。解决方案如下:
<xsl:variable name="phone" select="translate(D_PHONE, ' ', '')" />
<xsl:value-of select="concat('(', substring($phone, 1, 3), ') ', substring($phone, 4, 3), '-', substring($phone, 7, 4))" />
但是现在问题是有些字段会以123-456-7890的形式返回,而不是空格而且这个解决方案确实失败了。是否有替换标签,我可以基本上提到我想在字段中替换的所有字符,然后像以前一样格式化它们?
提前谢谢你们。
答案 0 :(得分:1)
如评论中所述,您可以将所有不需要的字符添加到translate()
函数中,将其转换为空字符串(IOW,删除它们)。
例如,这会删除空格和连字符:
<xsl:variable name="phone" select="translate(D_PHONE, ' -', '')" />
或者,您可以定义变量,以便仅保留数字:
<xsl:variable name="phone" select="translate(D_PHONE, translate(D_PHONE, '0123456789', ''), '')"/>