Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Функция проверки содержания определенных слов в строке (https://javascript.ru/forum/misc/74183-funkciya-proverki-soderzhaniya-opredelennykh-slov-v-stroke.html)

monsara 20.06.2018 11:15

Функция проверки содержания определенных слов в строке
 
Задача. Необходимо написать функцию checkForSpam(str)

Функция принимает 1 параметр str - строку, и проверять ее на содержание слов: spam и sale

Если нашли зарещенное слово то функция возвращает true, если запрещенных слов нет функция возвращает false

PS: слова могут быть в произвольном регистре

Как подправить код ниже, чтобы получить результат из комментариев к console.log после вызова функции
'use strict';

const checkForSpam = function (str) { let arrStr = str.split(' ');

for (let i = 0; i < arrStr.length; i += 1) { let word = arrStr[i].toLowerCase;

if (arrStr[i].toLowerCase === 'spam' || arrStr[i].toLowerCase === 'sale') {
  return true;
}

return false;
}

};

// Вызовы функции для проверки console.log( checkForSpam('Latest technology news') ); // false

console.log( checkForSpam('JavaScript weekly newsletter') ); // false

console.log( checkForSpam('Get best sale offers now!') ); // true

console.log( checkForSpam('[SPAM] How to earn fast money?') ); // true

Rise 20.06.2018 11:27

alert(new RegExp('spam|sale','i').test('sPaM'));

monsara 20.06.2018 11:35

Спасибо. Но мне бы попроще, обычной функцией. Так как я только изучаю и разбираюсь в JS.

Rise 20.06.2018 12:07

Точнее целое слово так:
function checkForSpam(string) {
    return new RegExp('\\bspam\\b|\\bsale\\b', 'i').test(string);
}
console.log(checkForSpam('sPaM'), checkForSpam('sPaMmer'));

Функцию исправить так, но всё равно она не найдет такую конструкцию "[SPAM]"
function checkForSpam(str) {
    var arr = str.toLowerCase().split(' ');
    for (var i = 0; i < arr.length; i++) {
        var word = arr[i];
        if (word == 'spam' || word == 'sale') {
            return true;
        }
    }
    return false;
}

ksa 20.06.2018 13:08

Цитата:

Сообщение от monsara
Как подправить код ниже, чтобы получить результат из комментариев к console.log после вызова функции

Как вариант...

var checkForSpam = function (str) { 
	var re=/(^|\b|\[)(sale|spam)(\b|\]|$)/i;
	return re.test(str);
};

alert( checkForSpam('JavaScript weekly newsletter') ); // false
alert( checkForSpam('Get best sale offers now!') ); // true
alert( checkForSpam('[SPAM] How to earn fast money?') ); // true


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