Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 15.12.2019, 18:28
Интересующийся
Отправить личное сообщение для Adrikks Посмотреть профиль Найти все сообщения от Adrikks
 
Регистрация: 13.12.2019
Сообщений: 14

рони,
ахах, хорошо, не буду больше присылать картинки, раз Вам это не нравится)
Думал так понятнее для отображения ожидаемого результата)
Пример:
исходная строка
главный врач 12345 главный сан врач
искомые совпадения
гл вр
главный врач 12345 главный сан врач
Вот пример с картинки) Такое не сработает на данный момент если добавить слово между "главный" и "врач"
Ответить с цитированием
  #22 (permalink)  
Старый 15.12.2019, 18:44
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 31,334

Adrikks,
картинка это замечательно пусть будет, но
для проверки необходим текст.
Ответить с цитированием
  #23 (permalink)  
Старый 15.12.2019, 19:26
Интересующийся
Отправить личное сообщение для Adrikks Посмотреть профиль Найти все сообщения от Adrikks
 
Регистрация: 13.12.2019
Сообщений: 14

рони,
Понял)
В общем суть в том, что должны выделяться последовательности искомых подстрок вне зависимости от кол-ва символов между ними
Был бы очень благодарен, если бы подсказали как это можно сделать
Ответить с цитированием
  #24 (permalink)  
Старый 15.12.2019, 19:44
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 31,334

Adrikks,
нужен алгоритм. пока не знаю короткой дороги.
Ответить с цитированием
  #25 (permalink)  
Старый 15.12.2019, 22:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 31,334

поиск совпадений в последовательности слов
Adrikks,

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <style>
        label {
            display: flex;
            flex-direction: column;
        }
        #result mark {
            color: #FF0000;
        }
    </style>
</head>
<body>
    <label>
        Исходная строка:
        <input id="text" placeholder="Введите текст..." value="главный врач 12345 главный сан врач">
    </label>
    <label>
        Искомые совпадения:
        <input id="search" placeholder="Введите текст..." value="гл вр">
    </label>
    <p id="result"></p>
    <script>
RegExp.escape = s => s.replace(/[[\\^$.|?*+()]/gim, "\\$&");
function mark(string) {
    const node = document.createElement("mark");
    node.textContent = string;
    return node;
}
search.addEventListener("input", () => {
    const value = text.value.match(/\s+|\S+/g);
    let parts = search.value.trim();
    const length = parts.length;
    if(!value || !length) {result.textContent = text.value; return};
    parts = parts.split(/\s+/).map(pattern => new RegExp("(\\S*?)(" +RegExp.escape(pattern) +")(\\S*)", "i"));
    result.textContent = "";
    let temp = [];
    for (let i = 0; i < value.length; ) {
        let k = i, arrFindIndex = [];
        let found = parts.every(reg => {
        let index = value.slice(k).findIndex(el => reg.test(el));
        if(index === -1 ) return false;
        k += index;
        arrFindIndex.push({k,reg});
        k++;
        return true
        });
        if(found) {i = k; temp.push(...arrFindIndex)}
        else i++;
    }
    value.forEach((el, i) => {
    const find = temp.find(({k}) => k == i);
    if(find){
        const {reg} = find;
        [_, ...el]= el.match(reg);
        el[1] = mark(el[1])
        result.append(
          ...el
        )
    }
    else result.append(el)
    })

});
search.dispatchEvent(new Event("input"));
</script>
</body>
</html>

Последний раз редактировалось рони, 16.12.2019 в 02:04.
Ответить с цитированием
  #26 (permalink)  
Старый 16.12.2019, 08:32
Интересующийся
Отправить личное сообщение для Adrikks Посмотреть профиль Найти все сообщения от Adrikks
 
Регистрация: 13.12.2019
Сообщений: 14

рони,
последовательность из двух символов находится везде, а из одного допустим, только один раз
Пример как должно:
Исходный текст:
АЛИЕВА БАЙНАТ АБДУРАХМАНОВНА
Искомые совпадения:
а б
Результат:
АЛИЕВА БАЙНАТ АБДУРАХМАНОВНА
Ответить с цитированием
  #27 (permalink)  
Старый 16.12.2019, 08:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 31,334

Сообщение от Adrikks
последовательность из двух символов находится везде, а из одного допустим, только один раз
я пас. вы третий раз изменили условия.
Ответить с цитированием
  #28 (permalink)  
Старый 16.12.2019, 11:38
Интересующийся
Отправить личное сообщение для Adrikks Посмотреть профиль Найти все сообщения от Adrikks
 
Регистрация: 13.12.2019
Сообщений: 14

рони,
Я понимаю) Я не знаю как вам объяснить всё это в одном алгоритме
По этому и кидал картинку

Последний раз редактировалось Adrikks, 16.12.2019 в 18:40.
Ответить с цитированием
  #29 (permalink)  
Старый 16.12.2019, 15:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 31,334

Adrikks,
Сообщение от Adrikks
Исходный текст:
АЛИЕВА БАЙНАТ АБДУРАХМАНОВНА
Искомые совпадения:
а б
Результат:
АЛИЕВА БАЙНАТ АБДУРАХМАНОВНА
результат вашего выделения неверный!!!
должно быть так
<p id="result"><mark>А</mark>ЛИЕВА <mark>Б</mark><mark>А</mark>ЙНАТ А<mark>Б</mark>ДУРАХМАНОВНА</p>

Последний раз редактировалось рони, 16.12.2019 в 15:48.
Ответить с цитированием
  #30 (permalink)  
Старый 16.12.2019, 16:12
Интересующийся
Отправить личное сообщение для Adrikks Посмотреть профиль Найти все сообщения от Adrikks
 
Регистрация: 13.12.2019
Сообщений: 14

рони,
Я вам показал, как по заданному мне заданию)
Ну хотя бы с вариантом представленным у вас, помогите пожалуйста)
Больше не побеспокою Вас
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открытие div блока при первом визите на сайт Nushaba Общие вопросы Javascript 28 20.12.2013 20:24
Как организовать RichEdit arma Элементы интерфейса 2 18.02.2010 14:57
О наследовании событий, или как корректно его отменить. JCShen Events/DOM/Window 8 09.02.2010 00:00
предложение по поводу последовательности уроков aldan8 Сайт Javascript.ru 12 10.09.2009 10:33
Как правильно послать XML в POST запросе LowCoder AJAX и COMET 10 15.07.2009 23:20