修改字符串练习中的字符

时间:2014-08-12 21:56:15

标签: javascript regex replace

这个令人敬畏的网站的人。

自两周前左右以来,我一直在阅读和练习一些Javascript。在完成CodeAcademy的JS课程后,我发现了一个名为codeWars的网站。我正在努力解决其中一种做法。我的代码使用控制台或JSfiddle工作,我想知道为什么不工作。另外,我知道这段代码有点狡猾,你能给我一些建议吗?

由于

说明:

根据以下模式创建一个名为encode()的函数,用数字替换给定字符串中的所有小写元音:

a - > 1,e - > 2,i - > 3,o - > 4,你 - > 5

My fiddle

    function encode(word) {
        var repa = /a/gi;
        var repe = /e/gi;
        var repi = /i/gi;
        var repo = /o/gi;
        var repu = /u/gi;

        word = word.toLowerCase();
        len = word.length;
        for (i = 0; i < len; i++) {
            if (word[i] === 'a') {
                word = word.replace(repa, '1');
            }
            else if (word[i] === 'e') {
                word = word.replace(repe, '2');
            }
            else if (word[i] === 'i') {
                word = word.replace(repi, '3');
            }
            else if (word[i] === 'o') {
                word = word.replace(repo, '4');
            }
            else if (word[i] === 'u') {
                word = word.replace(repu, '5');
            }
        }
        return word;
    }

谢谢你的时间,伙计们。

1 个答案:

答案 0 :(得分:0)

所以我编辑了你的小提琴,它似乎工作得很好?

您刚刚没有调用您的功能或打印出结果。

我添加了自己的小提琴,只是调用函数并提醒值:

function encode(word) {
    var repa = /a/gi;
    var repe = /e/gi;
    var repi = /i/gi;
    var repo = /o/gi;
    var repu = /u/gi;

    word = word.toLowerCase();
    len = word.length;
    for (i = 0; i < len; i++) {
        if (word[i] === 'a') {
            word = word.replace(repa, '1');
        } else if (word[i] === 'e') {
            word = word.replace(repe, '2');
        } else if (word[i] === 'i') {
            word = word.replace(repi, '3');
        } else if (word[i] === 'o') {
            word = word.replace(repo, '4');
        } else if (word[i] === 'u') {
            word = word.replace(repu, '5');
        }
    }
    return word;
}

alert(encode('aeiou'));

http://jsfiddle.net/rollyourowned/Lj6pmexL/2/

为了获得一点但不太聪明,你可以做这样的事情:

function encode(word) {

    var letterArray = {a:1,e:2,i:3,o:4,u:5};

    word = word.toLowerCase();
    len = word.length;
    for (i = 0; i < len; i++) {

     var re = new RegExp(word[i], "gi");
     word = word.replace(re, letterArray[word[i]]);

    }
    return word;
}

alert(encode('aeiou'));

http://jsfiddle.net/rollyourowned/kotLa70g/