※この記事は8年以上前の記事です。
現在は状況が異なる可能性がありますのでご注意ください。
こんばんは。
最近、JSの組み込みクラスをオーバーライドして拡張する方法覚えてから、けっこう楽しい。
いずれjQueryいらん時がくるかもしらん。
さて、表題の件なんだけど、
よくある方法が、
sliceとかsubstringを使う方法なのだが、
これらのn番目系のメソッドは、n番目を抽出はすれど、
n番目を削除して残った文字列がほしい、なんてことはできない。
要は、
"あほやろーこのくそ"の、"やろー"を取った、
"あほこのくそ"がほしいって時に一発ではできない。
replace使えばって?
それだと、下記場合、どうするのと。
"あほやろーこのやろー"の二番目の"やろー"だけを取りたい時。
普通にreplaceを使った場合、
"あほこの"になってしまう。
(一応、n番目に出現した文字列って、正規表現はあるらしいけど・・・)
というわけでn番目~n文字を抜いた文字列を生成する、メソッドを作った。
String.prototype.substrremove = function(offset, strNo){ var parent = this, parentStr = '', usedStrNo = 1, usedOffset, offsetNow=0; if(offset){ usedOffset = offset; } if(strNo){ usedStrNo = strNo; } for (var i = 0; i < parent.length; i++){ var addStr = ''; if (i < usedOffset) { addStr = parent[i]; } else { if (i > = usedOffset && i < usedStrNo+usedOffset) { } else { addStr = parent[i]; } } parentStr += addStr; } return String(parentStr); };
使い方は下記
var testStr = 'あほやろーこのやろー'; var resStr = testStr.substrremove(7, 3); console.log(resStr); // 出力結果:あほやろーこの になるはず。。。
前回記事のメソッドも組み合わせれば、
n番目に登場する指定文字を削除した文字列、なんてのもできる。
どんどん作ってこ~
コメントする