Sublime Text 3 - фрагмент с верблюжьим регистром - и удаление или преобразование слов из специальных символов
Я обновляю некоторые фрагменты 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>
В настоящее время, когда я печатаю This is an example of content. Special character examples: 20% & & % registered trademark ®
в 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% & & % registered trademark ®" />
</a>
</div>
</div>
Как вы можете видеть, прямо сейчас, вот как метрический текст переводит текущий пример:
"ThisisanexampleofcontentSpecialcharacterexamples20amp37registeredtrademarkreg"
Вот что я пытаюсь заставить это сделать:
- Он должен быть в верблюжьем корпусе, то есть каждая буква каждого слова должна быть написана заглавными буквами.
- Определенные символы должны быть переведены в слово. Так, например, "%" должен сказать "Процент" - и "&", (амперсанд), должно сказать "И".
- Имена сущностей HTML не должны появляться. Например, "®" просто не должно появляться в метриках. Прямо сейчас это показывает слово "рег". Так что в основном все, что находится между "&" и ";" не должно появляться - также как и "&" и ";" частей. Есть смысл? Хотя здесь это становится трудным - и также не должно появляться - или, по крайней мере, он может сказать "И".
Все что сказано - вот чего я пытаюсь добиться.
Текущая версия:ThisisanexampleofcontentSpecialcharacterexamples20amp37registeredtrademarkreg
Как я пытаюсь заставить это выглядеть:ThisIsAnExampleOfContentSpecialCharacterExamples20PercentAndRegisteredTrademark
Я пробовал комбинировать функции и несколько заставил его работать, но не полностью.
Поэтому я надеялся, что некоторые из вас, замечательные разработчики, могут знать, как это сделать.
1 ответ
Займусь от ответа здесь немного
Следующий фрагмент сделает так, чтобы при вводе This is an example of content. Special character examples: 20% & & % registered trademark ®
в alt
img
атрибут, он появится в 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/(&)|(&[^; ]+;)|(&)|(\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>
Как упомянуто в связанном ответе, это зависит от регулярных выражений и чередований.
/(&)|(&[^; ]+;)|(&)|(\b\w)|(%)|(\W)/(?1And:)(?2:)(?3And:)(?4\u\4:)(?5Percent:)(?6:)/g
(&)
сопоставьте амперсанд HTML-сущность с группой захвата 1.(?1And:)
если группа захвата (1) была найдена, замените ее наAnd
, Если это не совпало, ничего не делай.(&[^; ]+;)
соответствовать HTML-сущностям.(?2:)
если группа захвата (2) была сопоставлена, замените ее ничем. Если это не совпало, ничего не делай.(&)
голый амперсанд.(?3And:)
если группа захвата (3) была сопоставлена, замените ее наAnd
, Если это не совпало, ничего не делай.(\b\w)
первая буква слова.(?4\u\4:)
если группа захвата (4) была сопоставлена, замените первую букву ее заглавным эквивалентом. Если это не совпало, ничего не делай.(%)
голый процент.(?5Percent:)
если группа захвата (5) была сопоставлена, замените ее наPercent
, Если это не совпало, ничего не делай.(\W)
несловесный (az, 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