2016-07-06 29 views
2

我更新一些崇高的文本片段,以帮助自动化一些网页开发去除或字转换,但我遇到了一个有点障碍的。崇高的文本3 - 片断与骆驼案例 - 和特殊字符

对于这个片段我目前想获得指标的字符串(基于alt文本),要做到以下几点:

<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,并按时标签

<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> 

目前,当我输入This is an example of content. Special character examples: 20% & &amp; &#37; registered trademark &reg;ImageAltText场,这里是出现在指标字符串:

<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" 

这里是我想要得到它做:

  • 它需要骆驼套,意味着每个字的每个字母都需要大写。
  • 某些符号需要被翻译成一个字。例如,“%”需要说“百分比” - 和“&”,(&符号),应该说“和”。
  • HTML实体名称不应出现。例如,“®”应该不会显示在指标中。现在它显示“reg”字样。所以基本上任何介于“&”和“;”之间的东西不应该出现 - 以及“&”和“;”部分。合理?虽然这里是困难的地方 - &也不应该出现 - 或者至少它可以说“和”。

所有这一切说 - 这里就是我想要的目的。

当前版本:
ThisisanexampleofcontentSpecialcharacterexamples20amp37registeredtrademarkreg

我试图让它看起来像:
ThisIsAnExampleOfContentSpecialCharacterExamples20PercentAndRegisteredTrademark

我试过组合功能,并一定程度上得到了它的工作,但不完全。

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

回答

1

借用from the answer here一点:

下面的代码片段将使它这样,当你在altimg属性类型This is an example of content. Special character examples: 20% & &amp; &#37; registered trademark &reg;,它将在amain_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\4:)(?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\4:)(?5Percent:)(?6:)/g 
  1. (&amp;)匹配的符号HTML实体成捕获组1 (?1And:)如果捕获基团(1)被匹配,以And替换它。如果它不匹配,则什么也不做。
  2. (&[^; ]+;)匹配HTML实体。 (?2:)如果捕获组(2)匹配,则将其替换为无。如果它不匹配,则什么也不做。
  3. (&)裸号&符号。如果捕获组(3)匹配,则将其替换为And。如果它不匹配,则什么也不做。
  4. (\b\w)单词的第一个字母。 (?4\u\4:)如果捕获组(4)匹配,则将第一个字母替换为其大写字母。如果它不匹配,则什么也不做。
  5. (%)裸露的百分比。如果捕获组(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

+0

你,我的朋友,是个天才。我现在可以看到为什么我以前的尝试没有那么好 - 至少可以说。 此外 - 对每个条件在字符串中做了什么解释很棒。荣誉先生! – Hinukan

+0

@Hinukan,你的努力是一个好开始! :)我刚刚意识到我最初错过了你的一个要求 - 将'&'转换为'And' - 我已经编辑了我的答案,包括这个(虽然仍然删除其他HTML实体,并且仍然将裸'&'转换为'和'):) –

+0

真棒 - 我很欣赏它的先生! – Hinukan