0

В последние несколько дней мне пришлось использовать stackoverflow, в котором я нашел отличных и полезных разработчиков. Спасибо всем!!Специальный сниппет для текста Sublime

Я работаю над большим проектом, и мне нужна помощь. Я работаю с 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

Фрагмент используется для ввода часто используемого текста (т. Е. фрагмент текста), чтобы сэкономить время при вводе нового текста. Если у вас уже есть текст, который вам нужно изменить, фрагмент не является ответом.

Для этого вы хотите что-то сделать с поиском и заменой и, в частности, с помощью Regular Expression, чтобы найти и сопоставить текст, который вы хотите.

Для вашего образца выше, процесс будет что-то вроде следующего:

Откройте панель заменить, выбрав 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 часть, потому что текст из исходной строки будут сохранены.

В зависимости от ваших фактических обстоятельств вам может потребоваться настроить его соответствующим образом (скажем, если ваш пример текста не выложен очень красиво или что-то еще).

Я рекомендую что-то вроде this tutorial (которое я также связал с выше), чтобы получить более глубокое понимание того, что происходит. В частности, это объяснит, почему для добавления вопросительного знака вам нужно использовать \?, а не только ?, который я полностью замалчивал, потому что это отличное упражнение для читателя. ;)

+0

Ну, это должно работать нормально, но все дело в том, что он должен включать полный код, я имею в виду include '' также, как в примере: ' Вот мой пример текста ' потому что в коде есть некоторые другие области, которые включают '', но мне нужно изменить только те, у которых есть родительский элемент ' Linas

+0

Сорр, я обнаружил, что для этого я могу использовать 'CTRL + ENTER'. Все работает отлично! Вы сохранили для меня часы работы и позволили мне избежать множества ошибок в коде. СПАСИБО! – Linas

+0

Чтобы преобразовать это ' Вот мой образец текста ' в этом коде ' Вот мой пример текста]]> 'Я должен пойти, чтобы найти функцию в Sublime Text, и в поле поиска введите этот код ' (. *)' и поле для замены кода должно быть '<источник src =" https://www.mywebsite.com/sample.mp3 "> \ 1 \]] ' ' – Linas