読者です 読者をやめる 読者になる 読者になる

ボクの名前を呼ぶときは、初めと終わりにカワイイをつけてください.js

某アイドルのマスターでシンデレラな感じの音ゲーをやってたらなんか自分の名前を呼ぶときは前と後ろに「カワイイ」をつけろとか言ってくるアイドルが出てきた。

そこで、正規表現でそのアイドルの名前をマッチして前後に「カワイイ」を書き加えるコードを書いてみた。

var input = "輿水幸子はゲーム『アイドルマスターシンデレラガールズ』に登場する自称・カワイイボクっ娘アイドルである",
     output = null;

    var str = input,  // 入力受け取り
        pf = "カワイイ*", //前に付け加える文字列
        sf = "*カワイイ", //後ろに付け加える文字列
        // マッチする名前を拾う
        n = str.match(/さちこ|サチコ|さち子|幸子|輿水幸子|こしみずさちこ|コシミズサチコ|さっちん|さっちゃん|さっちー/mg);

    var u, i, l;
    // 名前が見つかったら
    if (n){
        //名前の前後にそれぞれ”カワイイ”をつける
        for (i=0, l=n.length; i<l; i++) {
            //すでに整形済みの名前はスルー
            u = new RegExp(n[i]+'(?!'+sf+')');
            // 入れ替え
            str = str.replace(u, pf+n[i]+sf);
        }
        // 出力
        output = str;
        console.log(output); //"カワイイ*輿水幸子*カワイイはゲーム『アイドルマスターシンデレラガールズ』に登場する自称・カワイイボクっ娘アイドルである"
    }

使用例

ブックマークレット

javascript:(function(){var c="color:#FFE5FF;background:#b6c2e9;font-size:.6px;vertical-align:middle;",d=document.body.innerHTML,_p="%E3%82%AB%E3%83%AF%E3%82%A4%E3%82%A4%EF%BC%8A",_s="%EF%BC%8A%E3%82%AB%E3%83%AF%E3%82%A4%E3%82%A4",p="<span style="+c+">"+_p+"</span>",s="<span style="+c+">"+_s+"</span>",n=d.match(/%E3%81%95%E3%81%A1%E3%81%93|%E3%82%B5%E3%83%81%E3%82%B3|%E3%81%95%E3%81%A1%E5%AD%90|%E5%B9%B8%E5%AD%90|%E8%BC%BF%E6%B0%B4%E5%B9%B8%E5%AD%90|%E3%81%93%E3%81%97%E3%81%BF%E3%81%9A%E3%81%95%E3%81%A1%E3%81%93|%E3%82%B3%E3%82%B7%E3%83%9F%E3%82%BA%E3%82%B5%E3%83%81%E3%82%B3|%E3%81%95%E3%81%A3%E3%81%A1%E3%82%93|%E3%81%95%E3%81%A3%E3%81%A1%E3%82%83%E3%82%93|%E3%81%95%E3%81%A3%E3%81%A1%E3%83%BC/mg),u,i,l;if(n){for(i=0,l=n.length;i<l;i++){u=new RegExp(n[i]+'(?!'+s+')');d=d.replace(u,p+n[i]+s);}document.body.innerHTML=d;}})();

上の文字列をURL欄に張って実行します。

実行すると… f:id:pentamania:20151110074012p:plain

詳細は以下のような感じ

javascript:(function(){
        var c ="color:#FFE5FF;background:#b6c2e9;font-size:12px;vertical-align:middle;",
            d = document.body.innerHTML,
            _p = "カワイイ*",
            _s = "*カワイイ",
            p = "<span style="+c+">"+_p+"</span>",
            s = "<span style="+c+">"+_s+"</span>",
            n = d.match(/さちこ|サチコ|さち子|幸子|輿水幸子|こしみずさちこ|コシミズサチコ|さっちん|さっちゃん|さっちー/mg),
            u, i, l;
        if (n){
            for (i=0, l=n.length; i<l; i++) {
                u = new RegExp(n[i]+'(?!'+s+')');
                d = d.replace(u, p+n[i]+s);
            }
            document.body.innerHTML = d;
        }
})();

変数_pと_sの値を変えれば別の言葉を付け加えることもできます。