Javascript.RU

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

Помогите из строки сделать массив с отфильтрованными словами
Помогите разобраться.
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);}
}}
но... не работает, перебрал уже кучу вариантов.
Не могу понять, что делаю не так и буду очень благодарен за любую помощь!
Ответить с цитированием
  #2 (permalink)  
Старый 03.12.2017, 22:00
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,493

result = tweet.match(/#\S+/g)
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 03.12.2017, 22:23
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Александр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));
Ответить с цитированием
  #4 (permalink)  
Старый 03.12.2017, 22:58
Интересующийся
Отправить личное сообщение для Александр3297 Посмотреть профиль Найти все сообщения от Александр3297
 
Регистрация: 03.12.2017
Сообщений: 14

Спасибо!очень выручили!
Ответить с цитированием
  #5 (permalink)  
Старый 03.12.2017, 23:09
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

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 из этой строки'));

Последний раз редактировалось ruslan_mart, 03.12.2017 в 23:15.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ребят помогите сделать рамку при наведении мышки" ifilippovs13 Элементы интерфейса 27 10.10.2014 23:37
Как сделать перенос строки в listview jQuery Mobile gargon2013 jQuery 0 17.07.2013 11:49
Помогите сделать эффект смены страниц Eugi Элементы интерфейса 6 16.07.2013 17:06
Как лучше сделать глобальный массив skyfish AJAX и COMET 4 17.02.2009 18:05
Помогите сделать полноценную замену тэгу <marquee> vasiliyb Элементы интерфейса 3 30.09.2008 04:01