在XSL中从字符串中删除非字母数字字符

11

如何在XSL中从字符串中删除非字母数字字符?

2个回答

19

如果你将非字母数字定义为[^a-zA-Z0-9]

<xsl:value-of select="
  translate(
    string,
    translate(
      string, 
      'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789',
      ''
    ),
    ''
  )
" />

请注意,这适用于XSLT 1.0版本。在XSLT 2.0中,您可以直接使用正则表达式,使用replace()


我不确定这是否正确:XSLT translate函数需要三个字符串。第二个字符串的所有内容都将被第三个字符串中的内容替换。这意味着上面的代码将删除所有字母数字字符。 - Ross Angus
@RossAngus 它从字符串中移除字母数字字符以获取非字母数字字符列表。然后它使用列表从输入中移除它们。 - Tomalak
谢谢。那很有道理。 - Ross Angus

9

对于XSLT 2.0,您可以使用以下方式的replace()函数:

<xsl:value-of select="replace(<string>, '[^a-zA-Z0-9]', '')" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接