Javascript - получить значение входного текста, но игнорировать некоторые слова - PullRequest
0 голосов
/ 22 сентября 2018

У меня есть страница, на которой у пользователя спрашивают его имя.

После ввода его в текстовом поле откроется ответ с использованием значения из текстового поля для приветствия пользователя.

Если пользователь просто вводит свое имя, все в порядке, но если он пишет что-то вроде «Меня зовут Джон», ответом будет «Привет, меня зовут Джон! Приятно познакомиться!», Чего я не делаюхочу случиться.

Есть ли способ получить пользовательский ввод, но исключить некоторые слова, такие как "my", "name", "is" ...

Это то, чтоУ меня есть:

function myFunction() {
    var text;
    var answer = document.getElementById("myInput").value.toLowerCase();
    answer = answer.replace(/[^a-z0-9\s]/g, "");

    switch(answer) {
        case "":
            text = "Please type something.";
        break;
        default:
        text = "Hello, " + answer + "! Nice to meet you!";
    }
    document.getElementById("reply").innerHTML = text;
}
<p>What is your name?</p>

<input id="myInput" type="text">

<button onclick="myFunction()">Go</button>

<p id="reply"></p>

Ответы [ 3 ]

0 голосов
/ 22 сентября 2018

@ Ответ Бармара сработает, если вы просто пытаетесь удалить несколько слов, и вы не возражаете жестко запрограммировать их в свой код.

Если ваш список увеличивается или он приходит из базы данных,Вы можете найти, что этот подход работает лучше.

const banned_words = ["my", "name", "is"];
const str = "MY name is Bonzo";

const newStr = banned_words.reduce(function(a, v) {
    // Make it case-insensitive
    var regex = new RegExp(v, "i");

    // Replace each banned word with the empty string
    return a.replace(regex, "")
  },
  str // Start with the original string

).trim(); // Then get rid of unwanted spaces.

console.log(newStr);
0 голосов
/ 22 сентября 2018

Вы можете сделать так:

var string = "my name is Jonh";
var words = ['my', 'name', 'is'];

words.forEach(function(word) {
    string = string.replace(word,'');

});

console.log(string);
0 голосов
/ 22 сентября 2018

Используйте замену регулярного выражения, чтобы удалить эти слова.

answer = answer.replace(/\b(my|name|is)\b/g, '').trim();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...