Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.09.2020, 11:08
Профессор
Отправить личное сообщение для CryNet Посмотреть профиль Найти все сообщения от CryNet
 
Регистрация: 02.01.2019
Сообщений: 151

Как вернуть найденную подстроку в строке?
В цикле перебираются элементы, из них при помощи textContent вытягивает содержимое, а мне нужно в этой строке найти подстроку и вернуть её, чтобы можно было слепить новую строку. Сейчас часть кода выглядит так, но работает не так как нужно:

option.forEach(element => {
        const text = element.textContent.replace(/\s+/g, ' ').trim() // убираем лишние пробелы
        const regexp = new RegExp(`${event.detail.value}`, 'i')
        const rez = text.replace(regexp, `<span class="-underline">${event.detail.value}</span>`)

        element.childNodes[0].remove() // удаляем текстовую ноду
        element.insertAdjacentHTML("afterbegin", rez) // вставляем span с текстом
    })


В event.detail.value находится искомая подстрока, мне в element.textContent нужно найти event.detail.value, но вернуть то, что нашлось. Использовать event.detail.value нельзя, т.к. оригинальная строка может быть "Тест", а юзер будет вводить "тЕст", в итоге получится новая строка, а должен сохраниться оригинал, т.е. "Тест", поэтому я хочу вытащить искомую подстроку в строке. Как это можно сделать?
Ответить с цитированием
  #2 (permalink)  
Старый 18.09.2020, 11:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

CryNet,
не осилил.
Ответить с цитированием
  #3 (permalink)  
Старый 18.09.2020, 11:30
Профессор
Отправить личное сообщение для CryNet Посмотреть профиль Найти все сообщения от CryNet
 
Регистрация: 02.01.2019
Сообщений: 151

Сообщение от рони Посмотреть сообщение
CryNet,
не осилил.
Прошу прощения.

Есть массив со строками:
const string = ["ТЕСТ","Строка", "String"]

Есть поле поиска, в который юзер что-то пишет, чтобы найти нужную эму строку из string, допустим на JS это выглядит так:
const search = "тЕ" // юзер ввёл "тЕ"


Мне нужно перебрать string и найти там элементы массива, которые содержат search. Я бы мог восспользоваться методом include(), но он вернёт true|false, а я хочу вернуть кусок этой строки - модифицировать её - сохранить в этом же массиве. Массив должен выглядеть так:
const  string = ["<span class="-underline">ТЕ</span>СТ","Строка", "String"]

Медотом replace() я тоже восспользоваться не могу, а то получиться такое:
const  string = ["<span class="-underline">тЕ</span>СТ","Строка", "String"]


То как вернуть часть строки, если она нашлась?
Ответить с цитированием
  #4 (permalink)  
Старый 18.09.2020, 12:23
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,692

const rez = text.replace(regexp,  (str, p1) => `<span class="-underline">${p1}</span>`)
Ответить с цитированием
  #5 (permalink)  
Старый 18.09.2020, 12:40
Профессор
Отправить личное сообщение для CryNet Посмотреть профиль Найти все сообщения от CryNet
 
Регистрация: 02.01.2019
Сообщений: 151

Сообщение от voraa Посмотреть сообщение
const rez = text.replace(regexp,  (str, p1) => `<span class="-underline">${p1}</span>`)
Спасибо. это сработало:
const rez = text.replace(regexp,  (str, p1) => `<span class="-underline">${str}</span>`)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вернуть коллбек OpenID (NodeJS + Angular) olimpset Angular.js 4 04.08.2018 15:15
Как вернуть блок обратно? Артур_ в_отчаянии jQuery 6 10.02.2016 20:56
как поменять местами значения в строке javascript? vladimir7517 Общие вопросы Javascript 9 11.10.2013 20:46
Как можно изменить URL в адресной строке браузера? балерун Events/DOM/Window 12 17.11.2009 13:08
как вызвать функцию название которой находиться в строке dark Общие вопросы Javascript 3 14.10.2009 13:02