Страницы

Поиск по вопросам

суббота, 21 декабря 2019 г.

Как сделать поисковый сниппет на Javascript?

#javascript #регулярные_выражения #поиск


Javascript. 
Есть массив со статьями. По ним происходит поиск через indexOf. 

Как сделать сниппет аля гугл? То есть брать первое вхождение в строке и выдергивать
несколько слов справа и слева? 

Например ищем слово file в строке:

Edit config.toml and change the default properties to suit your own information.
This is not required to run the example, but this is the global configuration file
and you're going to need to use it eventually. Start here!

In a command prompt or terminal, navigate to the path that contains your config.toml
file and run hugo. That's it! You should now have a public directory with a complete
blog! Open public/index.html in your browser and bask.

If that wasn't amazing enough, from the same terminal, run hugo server. This will
watch your directories for changes and rebuild the site immediately, and it will make
these changes available at http://localhost:1313/ so you can view your finished site
in your browser. Go on, try it. This is one of the best ways to preview your site while
working on it.


И получить сниппет:


  ...global configuration file and you're...

    


Ответы

Ответ 1



Можно так, как вариант: var str = 'navigate to the path that contains your config.toml file and run hugo'; console.log(snippet(str, 'file')); function snippet(string, phrase) { var re = new RegExp('(\\S+\\s){0,3}\\S*' + phrase + '\\S*(\\s\\S+){0,3}'); return string.match(re)[0]; }

Ответ 2



Или так, как вариант: var str = "this is the global configuration file and you're going"; var find = "file"; console.log(snippet(str, find)); function snippet(str, find) { var arr = str.split(" "); var index = arr.indexOf(find); var result = ""; for (i = -2; i <= 2; i++) { if(index + i >= 0 && index + i < arr.length) { var result = result + arr[index + i] + " "; } } return result; }

Комментариев нет:

Отправить комментарий