2016-07-06 6 views
2

일부 페이지 개발을 자동화하기 위해 일부 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> 

현재, 여기에 통계 문자열에 표시되는 내용입니다 :

,369

  • :

    여기
    "ThisisanexampleofcontentSpecialcharacterexamples20amp37registeredtrademarkreg" 
    

    내가 그것을 할 얻기 위해 노력하고 무엇인가 : 1,363,210

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

    당신이 볼 수 있듯이, 지금, 여기 메트릭 텍스트가 현재의 예를 변환하는 방법입니다 그것은 각 단어의 각 문자가 대문자로 표기되어야 함을 의미하는 낙타의 경우입니다.

  • 특정 기호는 단어로 번역되어야합니다. 예를 들어 "%"는 "백분율"을 말하고 "&"(앰퍼샌드)은 "그리고"라고 말합니다.
  • HTML 엔터티 이름이 나타나서는 안됩니다. 예를 들어, "®"은 측정 항목에 나타나지 않아야합니다. 지금은 "reg"단어를 보여줍니다. 그래서 기본적으로 "&"과 ";" 는 나타나지 않아야합니다. "&"및 ";" 부분품. 이해가 되니? 여기가 어려워지는 곳이기는하지만 - &도 나타나지 않아야합니다 - 아니면 적어도 "And"라고 말할 수 있습니다.

내가 말하고자하는 것이 바로 여기에 있습니다.

현재 버전 :
나는 그것을 같이하려고 노력하고 무엇 ThisisanexampleofcontentSpecialcharacterexamples20amp37registeredtrademarkreg

:
ThisIsAnExampleOfContentSpecialCharacterExamples20PercentAndRegisteredTrademark

내가 기능을 결합하는 시도하고 다소 작업을 먹은 아니라 완전히.

그래서 저는 여러분 중 일부는 훌륭한 개발자가이를 가능하게하는 방법을 알기를 희망했습니다.

답변

1

from the answer here 대출 약간 : PLACE-_-AH-_-0_year_ThisIsAnExampleOfContentSpecialCharacterExamples20PercentAndRegisteredTrademark : 당신이 altimg 속성에 This is an example of content. Special character examples: 20% & &amp; &#37; registered trademark &reg;를 입력 할 때, 그것은으로 amain_fp_tx 속성에 나타나도록

다음 코드는 그것을 만들 것입니다

<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;) 일치 캡처 그룹 (1)가 일치하는 경우 캡처 그룹에 앰퍼샌드 HTML 엔티티 1. (?1And:), 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