Специальный фрагмент для Sublime Text
В последние несколько дней мне пришлось использовать stackru, в котором я нашел замечательных и полезных разработчиков. Спасибо всем!!
Я работаю над большим проектом, и мне нужно немного помочь. Я работаю с Moodle XML-файла на Sublime Text 3.
Это небольшая часть кода, который у меня есть:
<questiontext format="html">
<text>Here is my sample text</text>
</questiontext>
Мне нужно преобразовать это в это:
<questiontext format="html">
<text><![CDATA[<audio preload="auto"><source src="https://www.mywebsite.com/sample.mp3"></audio>Here is my sample text?]]></text>
</questiontext>
Дело в том, что у меня около 400 строк, которые мне нужно изменить таким образом. И текст "Вот мой образец текста" везде разный. Как я могу сделать такое преобразование? Создать фрагмент? Если честно, я посмотрел, как создать фрагмент, но не могу понять, как создать такой, как этот... Все предложения приветствуются
1 ответ
Фрагмент используется для ввода часто используемого текста (т.е. фрагмента текста), чтобы сэкономить ваше время при вводе нового текста. Если у вас уже есть текст, который нужно изменить, фрагмент не является ответом.
Для этого вы хотите сделать что-то с поиском и заменой, в частности, используя регулярное выражение, чтобы найти и сопоставить текст, который вы хотите.
Для вашего примера выше процесс будет выглядеть примерно так:
Откройте панель замены, выбрав Find > Replace...
из меню или с помощью соответствующей клавиши для вашей операционной системы (она отображается в меню, если вы ее не знаете).
На появившейся внизу панели убедитесь, что "регулярные выражения" и "Соответствия выделенным цветом" включены, а "Сохранить регистр" выключен. Смотрите подсказки на кнопках.
Далее в Find What
введите текст, который вы хотите найти, для вашего примера:
<text>(.*)</text>
Часть регулярного выражения этого (.*)
который гласит "соответствует любой последовательности символов, в том числе ни одной вообще, и захватить (сохранить) то, что вы выбрали".
Когда вы вводите текст, если вы смотрите в буфере, вы увидите Sublime, обрисовывающий сопоставляемый текст, так как мы включили "выделение совпадений".
в Replace With
введите следующий текст:
<text><![CDATA[<audio preload="auto"><source src="https://www.mywebsite.com/sample.mp3"></audio>\1\?]]</text>
Волшебная часть здесь - это тот самый конец, который говорит \1\?
; там написано: "вставьте первое, что мы записали в поле поиска, а затем знак вопроса"; остальная часть текста - это то, что вы указали в своем вопросе.
Если в вашем примере нет необходимости ставить вопросительный знак в конце текста (в своем примере вы его добавили), вам не нужно \?
часть.
Теперь вы можете нажать Replace
или же Replace All
и все случаи <text>something</text>
будет заменен строкой замены, за исключением того, что не имеет значения, что something
часть, потому что текст из исходной строки будет сохранен.
В зависимости от ваших реальных обстоятельств вам может потребоваться настроить это соответствующим образом (скажем, если ваш пример текста не очень хорошо изложен или что-то в этом роде).
Я рекомендую что-то вроде этого урока (с которым я также связался выше), чтобы получить более глубокое понимание того, что происходит. В частности, это объясняет, почему для добавления знака вопроса необходимо использовать \?
и не только ?
, который я полностью замял, потому что это отличное упражнение для читателя.;)