lacrim
@lacrim
Отшибленный на всё голову экспериментатор.

Как обернуть часть текста в строке в html тег?

Подскажите пожалуйста как можно найти часть текста в строке между "(" и ")" и завернуть всё это в какой-нибудь html тег, например <i> или <span>

Поясню мой пример:

Из бекенда прилетает array типа:

<li>Москва (Московская область)</li> 
<li>Мытищи (Московская область)</li> 
<li>Химкм (Московская область)</li> 
<li>Санкт-петербург (Ленинградская область)</li> 
<li>Выборг (Ленинградская область)</li> 
<li>Кировск (Ленинградская область)</li>


Задача

Обернуть всё, что в скобках (области) в html тег и реплейсом потереть скобки, что бы получилось:

<li>Москва <i>Московская область</i></li> 
...
<li>Санкт-петербург <i>Ленинградская область</i></li> 
...


Я пробовал сделать что то вроде этого:

.replace(/\(/g, "<i>")
.replace(/\)/g, "</i>");

и конечно же у меня ничего не вышло, так как в строке html символы недопустимы. На этом мои идеи (познания в JS) были исчерпаны.

для более полной картины часть функции с которой работаю:

...
    var items = barq.baseField.innerHTML.replace(/<!--([^\[|(<!)].*)/g, '')
                                                    .replace(/\s{2,}/g, '')
                                                    .replace(/(\r?\n)/g, '');

    var regex = /<option(?:[^>]*?value="([^"]*?)"|)[^>]*?>(.*?)<\/option>\n?/gi;
            var li = '<li data-value="$1">$2</li>';
            items = items.replace(regex, li);

            return items;


Буду бескрайне благодарен откликнувшимся и вашим идеям.
  • Вопрос задан
  • 1124 просмотра
Пригласить эксперта
Ответы на вопрос 1
@M-ka
frontend присматривающийся к ror
2 реплейса не круто.... можно сделать за один.
Если предположить, что делается обход по ЛИ, тогда брать через иннерхтмл с ли в иче контент и пускать на реплейс через функцию.... ну а в качестве правила уже все зависит от того, что может быть, если только буковки или все, что угодно.... Вообщем это было бы что то типа (.*)\((.+))\(.*) -- ну или что то такого, особо не заморачивался и не проверял, но суть в том, что бы собрать все до первой скобки, сохранить, потом все между скобками и все после скобок посохранять в аргументы к реплейсу, при этом контент перед и после скобок может отсутствовать, а по средние должен (как мне кажется), ну а потом уже плясать с аргументами... Взять все 3, проверить, что не существует, то заменить на пустышку, нам же не нужен undefine, ну а 2й обвернуть в нужное....
Вообщем вот чтиво ну и пример с использованием ф-ии
javascript.ru/string/replace (как использовать с ф-ей)
javascript.ru/regexp (общая инфа)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы