我想检查一个字符串是否有某个字母,然后删除所述字母。
jsFiddle - http://jsfiddle.net/nNb5S/6/
例如,如果您输入...
..在“输入”textarea中,“结果”应该返回...
我已经弄明白了,但我想知道是否可以通过Switch完成?
这是我的工作代码::
function doSomething() {
var input = document.getElementById("h"),
result = document.getElementById("m");
var x = /x/gi;
var y = /y/gi;
var z = /z/gi;
if(input.value.indexOf(x)) {
result.value = input.value.replace(x,"");
}
if(input.value.indexOf(y)) {
result.value = result.value.replace(y,"");
}
if(input.value.indexOf(z)) {
result.value = result.value.replace(z,"");
}
}
这是我的切换代码::
以下代码 ONLY 在定义arg
时有效;但是,我不想定义它。
function doSomething() {
var input = document.getElementById("h"),
result = document.getElementById("m");
var x = /x/gi;
var y = /y/gi;
var z = /z/gi;
/*arg = x;*/ // ONLY WORKS WHEN YOU DEFINE arg. HOW DO YOU DEFINE arg AS ANY OF THE VARIABLES?
var iO = input.value.indexOf(arg);
switch (arg) {
case x:
result.value = input.value.replace(x, "");
break;
case y:
result.value = result.value.replace(y, "");
break;
case z:
result.value = result.value.replace(z, "");
break;
}
}
答案 0 :(得分:3)
switch
语句肯定是不的方式。一个更好的选择是使用像这样的单个正则表达式替换:
function doSomething() {
var input = document.getElementById("h"),
result = document.getElementById("m");
result.value = input.value.replace(/[xyz]/gi, "");
}
但是既然您已经在使用jQuery,那么可以进一步简化:
function doSomething() {
$("#m").val($("#h").val().replace(/[xyz]/gi, ""));
}
答案 1 :(得分:1)
indexOf
不是您匹配正则表达式的方式。 switch
也不是。RegExp.prototype.test
。您通常使用if (x.test(input.value)) {
result.value = input.value.replace(x,"");
}
,如下所示:
result.value = input.value
.replace(x, '')
.replace(y, '')
.replace(z, '');
但看到你正在进行替换,这不是更合适吗?
{{1}}
?除非你真的只想替换匹配的三个 last 正则表达式的匹配。