javascriptの挙動ってたまにおかしく感じる事が多々あるが、replace関数もその一つで、この機能を実行すると、文字列内の特定文字列を置換する機能なんだが、複数の置換に対応しておらず、最初の文字置換のみしか実行されない。
replaceを普通に使ってみる
var str = "abcdefgabcdefg";
var res = str.replace("abc","123");
console.log(res);
//[結果]-----
> 123defgabcdefg
アフォかと・・・
こんな使い方する奴、めったにおらんやろ!
そこで考えた。
「replaceは使うな!下記の書き方で行え!」・・・と・・・
次の手を考えた
var str = "abcdefgabcdefg";
var res = str.split("abc").join("123");
console.log(res);
//[結果]-----
> 123defg123defg
どうだ!
こうして、無意味な関数排除運動へと繋げたい。
実はできた・・・
var str = "abcdefgabcdefg";
var res = str.replace(/abc/g,"123");
console.log(res);
//[結果]-----
> 123defg123defg
globalマッチのgフラグをつけると全置換です。
とりあえず、使えますが、正規表現にしなければいけないのは、他の言語と大きく違っていて
改めて使いづらいですね。
全置換以外に使うことがどのくらいのレベルあるのか?と言う事と、stringの指定でも全置換にすることの方が違和感がないという事が、javascriptのこの関数によるバグを招いていると思いますね。
parseIntと同じで、仕様を見なおした方がいいと思いますね。是非とも・・・でも、もう無理か・・・orz
0 件のコメント:
コメントを投稿