我有一个页面,询问用户姓名。
在文本框中输入内容后,将显示一个答复,并使用文本框中的值向用户打招呼。
如果用户只键入他的名字,一切都很好,但是如果他键入类似“我的名字是约翰”的字样,则答复将是“你好,我的名字是约翰!很高兴认识你!”,我不会不想发生。
有没有一种方法可以获取用户输入,但是要排除一些单词,例如“我”,“名称”,“是” ...
这就是我所拥有的:
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>
答案 0 :(得分:4)
使用正则表达式替换删除这些单词。
answer = answer.replace(/\b(my|name|is)\b/g, '').trim();
答案 1 :(得分:1)
如果您只是想删除一些单词并且不介意将这些单词硬编码到代码中,@ Barmar的答案就可以使用。
如果您的列表不断增长,或者它来自数据库,那么您可能会发现这种方法效果更好。
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);
答案 2 :(得分:0)
您可以这样做:
var string = "my name is Jonh";
var words = ['my', 'name', 'is'];
words.forEach(function(word) {
string = string.replace(word,'');
});
console.log(string);