Помогите из строки сделать массив с отфильтрованными словами
Помогите разобраться.
1. Имеем следующую строку var tweet = 'Нужно выбрать только #heshtagone и #heshtegTwo из этой строки' 2. Задание: В результирующем массиве хэштеги должны быть без решетки и если в слове хэштегов нет, то возвращается пустой массив. Написал такую функцию: function check (tweet) { var result = []; for (var i = 0; i < (tweet.split(/\s|\#/)).length; i++) {var tweetTwo = (tweet.split(/\s|\#/))[i]; if (tweetTwo.indexOf(/\w+/) !== -1) { result.push(tweetTwo);} }} но... не работает, перебрал уже кучу вариантов. Не могу понять, что делаю не так и буду очень благодарен за любую помощь! |
result = tweet.match(/#\S+/g) |
Александр3297,
var tweet = 'Нужно выбрать только #heshtagone и #heshtegTwo из этой строки'; function check(tweet) { var result = [], h; for (var i = 0; i < tweet.length; i++) { if (tweet[i] == "#") { h = result.length; result[h] = "" } else if (/\S/.test(tweet[i]) && h !== void 0) result[h] += tweet[i]; else h = void 0 } return result }; alert(check (tweet)); |
Спасибо!очень выручили!
|
function check(tweet) { var data = [], pattern = /#(\S+)/g, result; while(result = pattern.exec(tweet)) { data.push(result[1]); } return data; } console.log(check('Нужно выбрать только #heshtagone и #heshtegTwo из этой строки')); Или function check(tweet) { var result = tweet.match(/#(\S+)/g); return result ? result.map(function(item) { return item.substr(1); }) : []; } console.log(check('Нужно выбрать только #heshtagone и #heshtegTwo из этой строки')); Или (ES6) const check = tweet => (tweet.match(/#(\S+)/g) || []).map(item => item.substr(1)); console.log(check('Нужно выбрать только #heshtagone и #heshtegTwo из этой строки')); |
Часовой пояс GMT +3, время: 10:22. |