фильтр для строк, как удалить слово

258
01 января 2019, 07:00

Есть функция которая определяет есть ли запрещенное слово в тексте, вопрос стоит в том как удалить\заменить это слово целиком?

Пример: 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 значит текст содержит запрещенное слово которое нужно удалить 
}

Answer 1

Для того чтобы удалить или заменить слово в строке, можно использовать метод 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)

READ ALSO
Управление HTML JavaScript

Управление HTML JavaScript

Как в JavaScript вывести на страницу "Ожидаете

231
Как скрыть блок css?

Как скрыть блок css?

Возник вопросИспользую псевдокласс hover для того чтобы скрыть блок, но после того как я убираю курсор с блока он снова появляется

311