首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >快速修复-模式

快速修复-模式
EN

Stack Overflow用户
提问于 2022-01-25 13:38:40
回答 1查看 42关注 0票数 0

我写了一个快捷键,在数字和字符串之间插入一个空格,例如:15 20Hz,20 to。

Schematron

代码语言:javascript
复制
<sch:pattern>
    <sch:title>quick-fix</sch:title>
    <sch:rule context="//text()">
      
        <sch:report
            test="matches(.,'(\d+)MHz') or matches(.,'(\d+)Hz')"
            sqf:fix="groupfix" role="warning">Insert a space</sch:report>
        
        <sqf:group id="groupfix">
            
            
            <sqf:fix id="MHz-fix" use-when="contains(current(), 'MHz')">
                <sqf:description>
                    <sqf:title>Insert space before MHz
                    </sqf:title>
                </sqf:description>
                <sqf:replace>
                    <xsl:analyze-string select="." regex="(\d+)MHz">
                        <xsl:matching-substring><xsl:value-of select="regex-group(1)"
                        /><xsl:value-of select="' MHz'"
                        /></xsl:matching-substring>
                        <xsl:non-matching-substring><xsl:value-of select="."
                        /></xsl:non-matching-substring>
                    </xsl:analyze-string>
                </sqf:replace>
            </sqf:fix>
            
            
            <sqf:fix id="Hz-fix" use-when="contains(current(), 'Hz')">
                <sqf:description>
                    <sqf:title>Insert space before Hz
                    </sqf:title>
                </sqf:description>
                <sqf:replace>
                    <xsl:analyze-string select="." regex="(\d+)Hz">
                        <xsl:matching-substring><xsl:value-of select="regex-group(1)"
                        /><xsl:value-of select="' Hz'"
                        /></xsl:matching-substring>
                        <xsl:non-matching-substring><xsl:value-of select="."
                        /></xsl:non-matching-substring>
                    </xsl:analyze-string>
                </sqf:replace>
            </sqf:fix>

        </sqf:group>
    </sch:rule>
</sch:pattern>

xml

代码语言:javascript
复制
<topic>
<p>15MHz</p>
</topic>

我能够在MHz之前插入空间,但是快速修复显示两个选项“MHz之前插入空间”和“Hz之前插入空间”。我只想要显示“在MHz之前插入空间”。

请帮帮忙。谢谢

EN

回答 1

Stack Overflow用户

发布于 2022-01-25 15:18:03

取而代之的是:

代码语言:javascript
复制
<sqf:fix id="Hz-fix" use-when="contains(current(), 'Hz')">

这样做:

代码语言:javascript
复制
<sqf:fix id="Hz-fix" use-when="matches(current(), '(\d+)Hz')">

在pattern.

  • Optional:中使用的也是检查给定的<xsl:analyze-string>.

  • matches函数,您可以用.代替current()来保存代码。

H 113在氧气中您可以使用<sqf:stringReplace regex="(\d+)Hz" select="'$1 Hz'"/>代替复杂的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70849587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档