Есть функция которая определяет есть ли запрещенное слово в тексте, вопрос стоит в том как удалить\заменить это слово целиком?
Пример:
test('Nickname somesite.com')
на выходе должен получиться Nickname •
function test(value) {
const text = value.replace(/ /g, '').toLowerCase()
const bad_words = [".ru", ".com",".xyz", ".io", ".tk", ".me"]
let bad_word = false
for (let i = 0; i < bad_words.length; i++) {
if (text.indexOf(bad_words[i]) > -1) {
bad_word = true
// тут соответсвенно должна быть функция удаления запрещенного слова
break
}
}
return bad_word // если true значит текст содержит запрещенное слово которое нужно удалить
}
Для того чтобы удалить или заменить слово в строке, можно использовать метод split. Этим методом вы разделяете старку на массив: указав в качестве разделителе "запрещенное слово". После чего, методом join получены массив можно преобразовать обратно в старку, заменив разделитель участков (,) на новое слово.
Если есть необходимость выполнить проверку большого числа запрещенных слов в текст, то можно сформировать объект в котором ключом будит запрещенное слово, а значением ключа замещаемое слово. После чего такой блок (объект) запустить на цикле FOR IN и на каждом витке перезаписывать старку с внесёнными правками.
var string = "Есть функция которая определяет есть ли запрещенное слово в тексте, вопрос стоит в том как удалить\заменить это слово целиком? Пример: test('Nickname somesite.com') на выходе должен получиться Nickname •"
var cenzrBlock = {
"Nickname": "Вася"
,".com": ""
,"somesite": "*"
}
function reString(_string, _filter){
for(let key_ in _filter){
_string = _string.split(key_).join(_filter[key_])
}
return _string
}
string = reString(string, cenzrBlock)
console.log(string)
Если нужно найти запрещённые слова с вхождением в них определённого корня, приставки или окончания. В током случаи также можно использовать метод split, но сначала для разделение текста на слова по пробелу, после чего в методе циклом FOR отправить каждое слово в метод, где оно разделиться по вхождению в нём набора символов, определяющего его как запрещённое и замене токового на альтернативной слово ...
var string = "Есть функция которая определяет есть ли запрещенное слово в тексте, вопрос стоит в том как удалить\заменить это слово целиком? Пример: test('Nickname somesite.com') на выходе должен получиться Nickname •"
var cenzrBlock = {
"Nickname": "Вася"
,".com": "*"
}
function reWord(_word, _filter){
for(let key_ in _filter){
if(1 in _word.split(key_)){
return _filter[key_]
}
}
return _word
}
function controlWords(_string, _filter){
let arr_ = _string.split(" ")
let length_ = arr_.length
for(let i_ = 0; i_ < length_; i_++){
arr_[i_] = reWord(arr_[i_], _filter)
}
return arr_.join(" ")
}
string = controlWords(string, cenzrBlock)
console.log(string)
Сборка персонального компьютера от Artline: умный выбор для современных пользователей