2016-07-06 12 views
2

いくつかのページの自動化を支援するためにいくつかの崇高なテキストスニペットを更新していますが、少し難題があります。私は現在、次の操作を実行するために、(altテキストに基づいて)メトリック文字列を取得しようとしています。このスニペットのためにSublime Text 3 - キャメルケースのスニペット - 特殊文字の削除または単語変換

IMGTを入力して タブを押したときに、あなたにこれを与え
<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> 

を私は 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_ImageAltText"> 
      <img src="http://images/sv/800/set##_####_year_img#?$P_CONTENT$" alt="ImageAltText" /> 
     </a> 
    </div> 
</div> 

は現在、ここにメトリック列に表示される内容です。

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

は、私はそれが何を取得しようとしていますものです:

  • それはラクダで囲む必要があります。つまり、各単語の各文字を大文字にする必要があります。
  • 特定のシンボルは単語に翻訳する必要があります。たとえば、「%」は「Percent」と言い、「&」(アンパサンド)は「And」とします。
  • HTMLエンティティ名は表示されません。たとえば、「®」はメトリックには表示されません。今すぐ "reg"という単語が表示されます。だから基本的には "&"と ";"は表示されません。また、 "&"と ";"部品。理にかなっている?ここでは難しいところですが、&も表示されません - 少なくとも "And"と言えます。

私が達成しようとしていることはすべてここにあります。

現在のバージョン:
私はそれが見えるように取得しようとしています何 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> 

リンクされた答えで言及したように、これは正規表現の条件文と代入に依存します。キャプチャグループ1 (?1And:)

/(&amp;)|(&[^; ]+;)|(&)|(\b\w)|(%)|(\W)/(?1And:)(?2:)(?3And:)(?4\u\4:)(?5Percent:)(?6:)/g 
  1. (&amp;)一致アンパサンドHTMLエンティティをキャプチャグループ(1)が一致した場合、Andと交換してください。一致しなかった場合は何もしないでください。
  2. (&[^; ]+;) HTMLエンティティに一致します。 (?2:)キャプチャグループ(2)が一致した場合は、何も置き換えないでください。一致しなかった場合は何もしないでください。
  3. (&)裸のアンパサンド。 (?3And:)キャプチャグループ(3)が一致した場合は、Andに置き換えます。一致しなかった場合は何もしないでください。
  4. (\b\w)単語の最初の文字。 (?4\u\4:)キャプチャグループ(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

+0

あなた、私の友人を参照してください、天才です。私の以前の試みがあまりうまくいかなかった理由を知ることができます。 また、文字列の各条件が何をしているのかの説明をレイアウトするのはすばらしかったです。名誉! – Hinukan

+0

@Hinukan、あなたの努力は良いスタートでした!私は最初にあなたの要件の一つを逃したことに気がつきました。 '&'を 'And'に変換しました。これを含むように私の答えを編集しました。(まだ他のHTMLエンティティを削除しながら、と '):) –

+0

恐ろしい - 私はそれを感謝します! – Hinukan

関連する問題