首页 > 解决方案 > 如何在 JavaScript 中替换字符串中的特定字符?

问题描述

给定一个类似 的字符串aaabba,我想要一个将a转换为b并将b转换为a的函数,返回bbbaab.

我试过这个笨拙的:

var newa = [];
function swit(x) { 
    for (var i = 0; i < x.length; i++) {
        if (x[i] === 'a') {
            newa.push('b');
        } 
        else if (x[i] === 'b') {
            newa.push('a');
        } 
        alert(newa);
    }
}
swit("aaab");

在点击了很多警报后,最后,最后一个警报显示了预期的结果。但我希望它没有逗号,并且首先 - 不是经过多次迭代:

在此处输入图像描述

我还尝试了该string.replace()方法 - 与for-loop 结合使用:

function swit(x) { 
    for (var i = 0; i < x.length; i++) {
        if (x[i] === 'a') {
            x.replace('a', 'b');
        } 
        else if (x[i] === 'b') {
            x.replace('b', 'a');
        } 
        alert(x);
    }
}
swit("aaab");

但没有任何改变。为什么?

您能否告诉我出了什么问题以及如何获得所需的结果?

标签: javascriptstringreplace

解决方案


最简单的方法是使用 将文本拆分为单个字符split,然后通过简单地替换a => b并再次映射字符数组b => ajoin或者只是使用replace

'bbbaab'.split('').map(char => char === 'a' ? 'b' : 'a').join('');

'bbbaab'.replace(/a|b/g, (match) => match === 'a' ? 'b' : 'a');

function swap(str) {
  return str.split('').map(char => char === 'a' ? 'b' : 'a').join('');
}
function swap2(str) {
  return str.replace(/a|b/g, (match) => match === 'a' ? 'b' : 'a');
}

console.log(swap('bbbaab'));
console.log(swap2('bbbaab'));


推荐阅读