Sublime Text 3 - 带有驼峰大小写的片段 - 以及特殊字符的删除或单词转换

Sublime Text 3 - snippet with camel case - and removal or word converting of special characters

我正在更新一些 Sublime Text 片段以帮助自动化一些页面开发,但我 运行 遇到了一些障碍。

对于这个片段,我目前正在尝试获取指标字符串(基于替代文本),以执行以下操作:

<snippet>
    <content><![CDATA[  
    <div class="div-block">
        <!-- Set A -->
        <div class="place_10 start">
            <a href="LinkGoesHere" main_fp_tx="PLACE-_-AH-_-${1:0}_${4:year}_${6/[^a-z0-9]+//ig}">
                <img src="http://images/sv/800/set${2:##}_${3:####}_${4:year}_img${5:#}?$P_CONTENT$" alt="${6:ImageAltText}" />
            </a>
        </div>
    </div>]]></content>
    <!-- Optional: Tab trigger to activate the snippet -->
    <tabTrigger>IMGT</tabTrigger>
    <!-- Optional: Scope the tab trigger will be active in -->
</snippet>

在键入 IMGT 并按 Tab 时会出现此信息:

<div class="div-block">
    <!-- Set A -->
    <div class="place_10 start">
        <a href="LinkGoesHere" main_fp_tx="PLACE-_-AH-_-0_year_ImageAltText">
            <img src="http://images/sv/800/set##_####_year_img#?$P_CONTENT$" alt="ImageAltText" />
        </a>
    </div>
</div>

目前,当我在 ImageAltText 字段中键入 This is an example of content. Special character examples: 20% & &amp; &#37; registered trademark &reg; 时,指标字符串中显示的内容如下:

<div class="div-block">
    <!-- Set A -->
    <div class="place_10 start">
        <a href="LinkGoesHere" main_fp_tx="PLACE-_-AH-_-0_year_ThisisanexampleofcontentSpecialcharacterexamples20amp37registeredtrademarkreg">
            <img src="http://images/sv/800/set##_####_year_img#?$P_CONTENT$" alt="This is an example of content.  Special character examples: 20% & &amp; &#37; registered trademark &reg;" />
        </a>
    </div>
</div>

如您所见,现在,这是公制文本翻译当前示例的方式:

"ThisisanexampleofcontentSpecialcharacterexamples20amp37registeredtrademarkreg"

这是我想让它做的事情:

综上所述 - 这就是我要实现的目标。

当前版本:
ThisisanexampleofcontentSpecialcharacterexamples20amp37registeredtrademarkreg

我想让它看起来像什么:
ThisIsAnExampleOfContentSpecialCharacterExamples20PercentAndRegisteredTrademark

我试过组合函数,并且有点让它起作用,但不完全。

所以我希望你们中的一些优秀的开发人员可能知道实现这一目标的方法。

借用from the answer here一点:

以下代码片段将使您在 alt img 属性中键入 This is an example of content. Special character examples: 20% & &amp; &#37; registered trademark &reg; 时,它将出现在 a main_fp_tx 中属性为:PLACE-_-AH-_-0_year_ThisIsAnExampleOfContentSpecialCharacterExamples20PercentAndRegisteredTrademark:

<snippet>
    <content><![CDATA[  
    <div class="div-block">
        <!-- Set A -->
        <div class="place_10 start">
            <a href="LinkGoesHere" main_fp_tx="PLACE-_-AH-_-${1:0}_${4:year}_${6/(&amp;)|(&[^; ]+;)|(&)|(\b\w)|(%)|(\W)/(?1And:)(?2:)(?3And:)(?4\u:)(?5Percent:)(?6:)/g}">
                <img src="http://images/sv/800/set${2:##}_${3:####}_${4:year}_img${5:#}?$P_CONTENT$" alt="${6:ImageAltText}" />
            </a>
        </div>
    </div>]]></content>
    <!-- Optional: Tab trigger to activate the snippet -->
    <tabTrigger>IMGT</tabTrigger>
    <!-- Optional: Scope the tab trigger will be active in -->
</snippet>

如链接答案中所述,这依赖于正则表达式条件和交替。

/(&amp;)|(&[^; ]+;)|(&)|(\b\w)|(%)|(\W)/(?1And:)(?2:)(?3And:)(?4\u:)(?5Percent:)(?6:)/g
  1. (&amp;) 将与号 HTML 实体匹配到捕获组 1。(?1And:) 如果捕获组 (1) 匹配,则将其替换为 And。如果不匹配,什么也不做。
  2. (&[^; ]+;) 匹配 HTML 个实体。 (?2:) 如果捕获组 (2) 匹配,则将其替换为空。如果不匹配,什么也不做。
  3. (&) 裸符号。 (?3And:) 如果捕获组 (3) 匹配,则将其替换为 And。如果不匹配,什么也不做。
  4. (\b\w) 单词的第一个字母。 (?4\u:) 如果捕获组 (4) 匹配,则将第一个字母替换为等效的大写字母。如果不匹配,什么也不做。
  5. (%) 裸百分比。 (?5Percent:) 如果捕获组 (5) 匹配,则将其替换为 Percent。如果不匹配,什么也不做。
  6. (\W) 非单词(a-z、0-9 等)字符,包括空格。 (?6:) 如果捕获组 (6) 匹配,则将其替换为空。如果不匹配,什么也不做。

  • /g 全局修饰符 - 即不要只在第一场比赛就停下来。我删除了 i - 不区分大小写的修饰符,因为我的正则表达式不需要它。

因为捕获组是按顺序匹配和替换的,所以它会在查看裸符号之前替换 HTML 个实体,最后去除非单词字符。

有关替换语法的详细信息,请参阅 http://www.boost.org/doc/libs/1_61_0/libs/regex/doc/html/boost_regex/format/boost_format_syntax.html