gpt4 book ai didi

xslt - xsl删除所有非数字字符并以1开头

转载 作者:行者123 更新时间:2023-12-03 19:31:27 25 4
gpt4 key购买 nike

我需要将传入的电话号码字符串转换为没有任何非数字字符的标准化格式,并在开头的数字为1时将其去除。

例如:

“+1(222)333-4444 x 5555”变为“22233344445555”

在此先感谢您的帮助!

最佳答案

1. XSLT 1.0解决方案:

此转换:

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>

<xsl:template match="text()">
<xsl:variable name="vnumsOnly" select=
"translate(., translate(.,'0123456789',''), '')
"/>

<xsl:value-of select=
"substring($vnumsOnly, (substring($vnumsOnly,1,1)='1') +1)"/>
</xsl:template>
</xsl:stylesheet>

应用于此XML文档时的 :
<t>"+1 (222) 333-4444 x 5555</t>

产生所需的正确结果:
22233344445555

解释:
  • 表达式:translate(.,'0123456789','')计算为包含当前节点中所有非数字字符的字符串。
  • 我们在表达式中使用上面的1 .:

    翻译(。,翻译(。,'0123456789',''),'')

  • 并得出一个字符串,其中删除了当前节点中的所有非数字字符。

    .3。如果(substring($vnumsOnly,1,1)='1') +1)"的第一个字符是2,则表达式:$vnumsOnly的计算结果为'1';如果起始字符不是'1',则表达式的计算结果为1

    .4。我们在以下表达式中使用3。
    substring($vnumsOnly, (substring($vnumsOnly,1,1)='1') +1)

    如果不是以“1”开头,则计算结果为相同的字符串$vnumsOnly,如果第一个字符为“1”,则计算结果为从第二个字符开始的子字符串。

    II。 XPath 2.0解决方案:

    只需使用即可:
    replace(replace(., '[^0-9]', ''), '^1', '')

    内部替换将删除所有不是0到9(数字)的字符。外部替换将删除前导1(如果存在)。

    关于xslt - xsl删除所有非数字字符并以1开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3821741/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com