当前位置:  开发笔记 > 编程语言 > 正文

XSLT 2.0,替换功能:如何用大写替换匹配组?

如何解决《XSLT2.0,替换功能:如何用大写替换匹配组?》经验,为你挑选了1个好方法。

如果我的XSL文件中有以下元素:


例如,来自'get_polygene_lubricants'的'getpolygenelubricants'.

我想要做的是将'_'后的第一个字母替换为字母的大写变体.我用谷歌搜索,阅读文档,但我无法在XSLT中找到任何解决方案来进行简单的替换.

也许有人知道XSLT 2.0是否可行?



1> Dimitre Nova..:

编辑:根据原始海报的说明,由下划线分隔的第一个字符串不应该将其首字母大写.

此解决方案不使用递归,应该更有效.

这是新的解决方案:

string-join(
            (for  $i in 1 to count(tokenize(.,'_')),
                  $s in tokenize(.,'_')[$i],
                  $fl in substring($s,1,1),
                  $tail in substring($s,2)
               return
                  if($i eq 1)
                   then $s
                   else concat(upper-case($fl), $tail)
             ),
                        ''
           )

结果现在完全符合要求:

underLinedString

以下是旧解决方案.

replace()函数假设您有一个固定的替换 - 因此它不是解决此问题的最佳工具.

这是一个单行的XPath 2.0解决方案(当然它可以用作XSLT 2.0转换的一部分:)):

string-join(
            (for $s in tokenize(.,'_'),
                 $fl in substring($s,1,1),
                 $tail in substring($s,2)
               return
                 concat(upper-case($fl), $tail)
             ),
            ''
           )

当我们在XSLT 2.0转换中使用上面的表达式时,如下所示:


    
     
    

并将其应用于此XML文档:

under_lined_String

产生了想要的结果:

UnderLinedString

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有