使用正则表达式,你现在的样子是不是真的有必要。相反,我将字符串分割成令牌并删除搜索词匹配的道理,如果一个作用:
function removeWord(myString, wordToReplace)
{
var tokens = myString.split(/\s*,\s*/); // allow for whitespace around the comma
var index = $.inArray(wordToReplace, tokens);
if (index != -1)
{
tokens.splice(index, 1);
}
return tokens.join(", "); // Assumes you want a space after each comma
}
var s = "Bart Simpson, Ex-girlfriend, dude, radical";
removeWord(s, "dude"); // returns "Bart Simpson, Ex-girlfriend, radical
如果有可能,你想搜索包含重复的项目串,你可以使用该函数的本次修改过的版本(indexOf
只返回第一个索引,因此需要一个循环来找出所有的人):
function removeWord(myString, wordToReplace)
{
var tokens = myString.split(/\s*,\s*/);
var index;
while ((index = $.inArray(wordToReplace, tokens)) != -1)
{
tokens.splice(index, 1);
}
return tokens.join(", ");
}
var s = "Bart Simpson, Ex-girlfriend, dude, radical, dude";
removeWord(s, "dude"); // returns "Bart Simpson, Ex-girlfriend, radical
当我运行这段代码我上调用的indexOf一个“对象不支持此属性或方法”错误。当我警告(令牌)时,它会返回删除空格的字符串。这就像分裂没有返回数组?我可以指定类型来强制它返回一个吗?以某种方式投射它? – YourMomzThaBomb 2010-03-23 19:43:06
'String.split'是一个内置的JavaScript函数,它返回一个数组。是否有可能在某处重写了'String.prototype.split'? – 2010-03-23 19:47:47
那么,jQuery包含在这个项目中,所以也许它使用jQuery分割? – YourMomzThaBomb 2010-03-23 19:48:44