JavaScriptで10の練習問題 #6

ちょっと間があいてしまったけど続きを。

テキストを入れると語尾が赤ちゃん言葉に

「語尾が」って言うのが難易度を一気に上げている。

ちょっと面倒なので、さ行を全部変換する感じで行ってみよう。

function BabyTalk() {
    /**
     * 'さ' : 'ちゃ',
     * 'す' : 'ちゅ',
     * 'せ' : 'ちぇ',
     * 'そ' : 'ちょ',
     * 'し' : 'ち'
     */
    this.words = {
        '\u3055' : '\u3061\u3083',
        '\u3059' : '\u3061\u3085',
        '\u305b' : '\u3061\u3047',
        '\u305d' : '\u3061\u3087',
        '\u3057' : '\u3061'
    }
}
BabyTalk.prototype = {
    setWords : function (words) {
        this.words = words;
    },
    baby : function (str) {
        for (var word in this.words)
            str = str.replace(eval('/'+ word +'/g'), this.words[word]);
        return str;
    },
    adult : function (str) {
        for (var word in this.words)
            str = str.replace(eval('/'+ this.words[word] +'/g'), word);
        return str;
    }
}

逆の変換で行けば 元の言葉に戻せるんじゃないかと思って adult を付けたけど、原文に ちゃ、ち、ちゅ、ちぇ、ちょ が含まれてるとお終いですね。

余談

育児で今回の赤ちゃん言葉(ちゃ、ち、ちゅ、ちぇ、ちょ)を使うのは、言葉の発育に良く無いので使わない方がいいですよ。