几天前,我问了一个类似的问题以替换XSLT中的空格,但是现在我在同一代码中遇到了另一个问题。
先前问:因此,我必须从应用程序中导出数据,现在为此,我编写了XML代码,而在导出某些字段的同时,需要格式化我正在使用XSLT的格式。现在,此处的问题在我的SQL Server数据库中,我有一个联系码字段,其中一些数字以1234567890的格式为1234567890,而有些则具有空格123 4567890。因此,现在当我使用以下提到的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,带有破折号而不是空格,因此此解决方案确实失败了。是否有一个替换标签,我基本上可以提及我想在字段中替换的所有字符,然后像以前一样格式化它们?
谢谢你们。
如注释中所述,您可以将 ash 不需要的字符添加到translate()
函数中,将它们转换为空字符串(IOW,删除它们(。
例如,这同时删除了空间和连字符:
<xsl:variable name="phone" select="translate(D_PHONE, ' -', '')" />
另外,您可以定义变量,以便仅保留数字:
<xsl:variable name="phone" select="translate(D_PHONE, translate(D_PHONE, '0123456789', ''), '')"/>