javascript - 在字符串中搜索和替换

标签 javascript

下面的代码循环遍历一个字符串,并删除字符串中的字符与在removeDuplicates() 中传递的字符之间的所有重复项。所以数组将等于“iel”,效果很好。然而,如果我传递一个带有双字母的单词,如“grass”数组,它将等于 ra,因为 s 的两个实例都将被删除。我只需要删除字母 s 的一个实例而不是全部?

 var currentWord = "field";
 removeDuplicates(f,d);

 removeDuplicates:function(i, j){
      var arr = []
      var w = "";
      for(k=0;k<currentWord.length;k++){
           l = currentWord[k];
           arr.push(l);
           if(i === l){          
                arr.splice(i,1);
                index = arr.indexOf(i);
                arr.splice(index, 1);

            };

            if(j === l){
                index = arr.indexOf(j);
                arr.splice(index, 1);
                break;
            };
        }

        for(l=0;l<arr.length;l++){
            w += arr[l]   
        }

        return w;
    },

最佳答案

我想您正在尝试查找并替换(删除)字符串中的匹配字符。

你可以这样做:

演示:http://jsfiddle.net/gkzHX/

function findAndReplace(a, b) {
    b.forEach(function(s) {
        a = a.replace(s, '');
    });
    return a;
}

console.log(findAndReplace("field", ['f', 'd'])); // returns iel
console.log(findAndReplace("grass", ['g', 's'])); // returns ras

replace 替换目标字符串中第一次出现的字符。

<小时/>

此外,正如 @thg435 在评论中指出的那样,您可以将集合作为字符串而不是数组传递,然后将其转换为函数内的数组,然后使用替换来减少它.

function findAndReplace(a, b) {
    return b.split("").reduce(function(a, s) {
        return a.replace(s, '');
    }, a);
}

现在您可以将搜索字符作为字符串传递:

console.log(findAndReplace("field", 'fd'));
console.log(findAndReplace("grass", 'gs'));

@thg435 的 fiddle :http://jsfiddle.net/gkzHX/1/

关于javascript - 在字符串中搜索和替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24428916/

相关文章:

javascript - 当 id 包含在引号中时,从 JavaScript 对象数组中获取值会中断

javascript - 如何在一个字符串中插入多个变量?

javascript - 我们可以在另一个事件上调用为一个事件编写的 JS 函数吗?

javascript - 从 XMLHttpRequest 接收多个变量

javascript - Passport.js 用户登录和身份验证

php - 有什么原因这行不通吗?

javascript - 基于动态生成的 DOM 元素运行脚本

javascript - 我如何使用其 href + <a> 链接引用 <a> 链接位于 <li> 下

javascript - jQuery 附加 html 问题

javascript - fabric.js 箭头捕捉到网格