Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   как обернуть слова в тексте в тег strong (https://javascript.ru/forum/css-html/69754-kak-obernut-slova-v-tekste-v-teg-strong.html)

prog77 16.07.2017 20:22

как обернуть слова в тексте в тег strong
 
Добрый день есть слова в массиве или их часть. как можно обернуть все слова в тексте в тег strong, но если это часть слова то выделить все слово, если слова находятся рядом то выделить их оба
Например массив содержит следующие слова:
слов
предложения
из
просто

Есть текст
простой текст словосочетание из предложения

в итоге должно обернуть "простой" и "словосочетание из предложения" в тег strong.

j0hnik 16.07.2017 20:57

глубина схожести какая должна быть?
Однокоренные слова.
Только окончания разные.
Просто совпадения по нескольким символам

рони 16.07.2017 21:35

prog77,
<style type="text/css">
   strong{
     border: 2px #0000FF solid;
     border-radius: 8px;
     padding: 2px 8px;
   }

  </style>
<script>
  var a = "слов|предложения|из|просто", b;
  var reg = new RegExp("^("+a+")");
  var str = "простой текст словосочетание из предложения"
  str = str.split(/\s+/).map(function(a,i,c) {
  reg.lastIndex=0;
  if(reg.test(a)&&!b) {a = "<strong>" + a; b=true};
  reg.lastIndex=0;
  if((!c[i+1] && b)||(!reg.test(c[i+1]) && b)) {a += "</strong>";b=false};
  return a
}).join(" ");
document.write(str)
  </script>

prog77 17.07.2017 10:07

Цитата:

Сообщение от j0hnik (Сообщение 458674)
глубина схожести какая должна быть?
Однокоренные слова.
Только окончания разные.
Просто совпадения по нескольким символам

Да я об этом не подумал да было бы неплохо как-то искать однокоренные
например часть слова
розыгр
разыгр
на слова
розыгрыши, розыгрыш, разыграем,
В примере что я вам дал первый раз конечно слов
должно обернуть
слово, словах, слов, но никак не словосочетание, только как это реализовать, у меня даже в голове не укладывается, это нужно как-то учитывать окончания что-ли, если вы делали похожую задачу буду признателен если кините пример. В любом случае я могу изменить свои данные под приведенный пример, например вместо разыгр могу сделать разыгра, то есть могу сделать из одного слова несколько вариантов что бы подогнать только под окончание что-ли, только как узнать что это только окончание, а не составное слово. Спасибо

prog77 17.07.2017 10:09

рони, спасибо если что буду Ваш вариант использовать

рони 17.07.2017 10:54

prog77,
чем вариант в пост №3 не устроил, и что вам нужно пример сделайте.
ваше описание пост №4 не осилил

prog77 17.07.2017 12:02

рони,
ваш пост полностью выполняет поставленную мной предыдущую задачу, но j0hnik, спросил одну вещь "Только окончания разные" в вашем случае это однокоренные слова, а мне уже нужно только с разными окончаниями. Да 4 пост немного за мудрено написал.
Я имел ввиду что могу подогнать все слова в массив. Сейчас у меня в массиве есть например
розыгр (розыгр аем)(розыгр ают)
разыгр (разыгр аем)(разыгр ают)

а я могу сделать
розыгра (розыгра ем)(розыгра ют)
разыгра (разыгра ем)(разыгра ют)
то есть сократить до нужного окончания, но как понять что это окончание а не однокоренное слово. Я в смысле как сделать что бы "словосочетание" не учитывалось потому что оно однокоренное со словом "слов". Как сделать выделение только с измененными окончаниями "слова","словах" но не "словосочетание".

рони 17.07.2017 12:09

prog77,
не осилил, видимо бесполезно, но спасибо, больше не надо.

prog77 17.07.2017 12:41

Не знаю может просто делать проверку если найденное слово больше искомого более чем на 3 символа значит не оборачивать в strong, это единственное что в голову приходит.

Dilettante_Pro 17.07.2017 13:55

prog77,
Цитата:

Сообщение от prog77
может просто делать проверку если найденное слово больше искомого более чем на 3 символа значит не оборачивать в strong

По такому принципу отбросится, например, словарный
А как насчет приставок? Например, пословица?


Часовой пояс GMT +3, время: 20:42.