从 phone 数字中过滤字母和 phone 数字的 XSLT 函数
XSLT function to filter alphabets and phone number from phone number
我必须使用 XSLT 将 xml 日期转换为 csv。
phone 号码有一个字段,其中可能包含字母、space、国家代码(美国为 +1)以及特殊字符。我必须删除 space、特殊字符、国家代码和字母表,只保留 10 位数字值。我创建了下面的函数,它删除了除字母以外的这些。要删除两组字母 (2*26),如果我采用这种方法,我必须使用替换函数 52 次。
<xsl:function name="wd:gePhone">
<xsl:param name="phone_number" />
<xsl:if test="$phone_number !=' '" >
<xsl:value-of select="normalize-space(replace(replace(replace(replace(replace(replace($phone_number,'-',''),'/',''),' ',''),'\)',''),'\(',''),'\+1',''))"/>
</xsl:if>
</xsl:function>
- 你有另一个过滤字母表的方法或函数吗
也来自这样的 phone 个数字?
您应该使用一个字符 class:
,而不是多次调用替换,每次调用一个字符
replace(replace($num, 'a', ''), 'b', '')
可以改写为:
replace($num, '[ab]', '')
这可以与两个字符长的字符串 +1
:
的替代项一起使用
replace($num, '[ab]|\+1', '')
并且在字符class中使用范围a-z
可以匹配从A到Z的所有字符。因此,通过 space 规范化,重复使用与您的示例中相同的字符,它将是:
normalize-space(
replace($num,'[-/,()a-zA-Z]|\+1',''))
注意字符-
,因为它在2个字符之间的字符class中有特殊含义,如果是[
之后的第一个字符就可以自己使用.
如果只需要替换单个字符,也可以使用translate()函数
translate($num, "-/ ()", "")
<xsl:variable name="vnumsOnly"
select="translate(Phone_Field, translate(Phone_Field, '0123456789', ''), '')"/>
<xsl:value-of select="substring($vnumsOnly, (substring($vnumsOnly, 1, 1) = '1') + 1)"/>
我必须使用 XSLT 将 xml 日期转换为 csv。 phone 号码有一个字段,其中可能包含字母、space、国家代码(美国为 +1)以及特殊字符。我必须删除 space、特殊字符、国家代码和字母表,只保留 10 位数字值。我创建了下面的函数,它删除了除字母以外的这些。要删除两组字母 (2*26),如果我采用这种方法,我必须使用替换函数 52 次。
<xsl:function name="wd:gePhone">
<xsl:param name="phone_number" />
<xsl:if test="$phone_number !=' '" >
<xsl:value-of select="normalize-space(replace(replace(replace(replace(replace(replace($phone_number,'-',''),'/',''),' ',''),'\)',''),'\(',''),'\+1',''))"/>
</xsl:if>
</xsl:function>
- 你有另一个过滤字母表的方法或函数吗 也来自这样的 phone 个数字?
您应该使用一个字符 class:
,而不是多次调用替换,每次调用一个字符replace(replace($num, 'a', ''), 'b', '')
可以改写为:
replace($num, '[ab]', '')
这可以与两个字符长的字符串 +1
:
replace($num, '[ab]|\+1', '')
并且在字符class中使用范围a-z
可以匹配从A到Z的所有字符。因此,通过 space 规范化,重复使用与您的示例中相同的字符,它将是:
normalize-space(
replace($num,'[-/,()a-zA-Z]|\+1',''))
注意字符-
,因为它在2个字符之间的字符class中有特殊含义,如果是[
之后的第一个字符就可以自己使用.
如果只需要替换单个字符,也可以使用translate()函数
translate($num, "-/ ()", "")
<xsl:variable name="vnumsOnly"
select="translate(Phone_Field, translate(Phone_Field, '0123456789', ''), '')"/>
<xsl:value-of select="substring($vnumsOnly, (substring($vnumsOnly, 1, 1) = '1') + 1)"/>