- ベストアンサー
Javascriptで文字列操作
こんにちは。 strの右から2文字を取り出したいのですがうまくいきません。 どこが間違ってますでしょうか? strの文字列の長さはそのときによって違います。 function test(){ str="12345" alert(str = str.substr(-0,2)); }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
function test(){ str="12345" alert(str.substr(str.length-2)); } こうやるのが簡単だと思います。 ・-0は、負の数ではなく、0として扱われると思いますよ。 ・「alert("12345".substr(-1,2))」も「12」と表示されてしまいました。^^;
その他の回答 (1)
- leaz024
- ベストアンサー率75% (398/526)
本来 substr は開始位置に負の値を指定することができ、 str.substr(-n, m) と記述すると、 str.substr(str.length - n, m) として処理されます(ECMAより)。 ところがIEでは、これが正常に作動しないのです。(少なくとも6.0ではそう) MSDNで確認したところ、substr で開始位置に負数が指定できる~という記述がないので、IEでは仕様が変更されているのかも知れません。 単なるバグかもしれませんが、各ブラウザで同じ処理がされないのは困るので、ここは substr ではなく slice を使った方が良さそうです。 slice でも開始位置に負数が指定できるので、 str.slice(-2) とすれば、右から2文字を取り出すことができます。 (IE 6.0 / NN 4.7, 6.2, 7.0 / Opera 6.0 確認済み)
お礼
ありがとうございます! なるほど、IEのバグだったんですねー。 サンプルのとおり書いてもできないはずです。 なるほど、sliceでもできますね。 原因がわかってすっきりです。 どうもありがとうございました☆
お礼
こんばんわ!ありがとうございます。 ばっちりできました! なるほどなるほど、です。 とほほ、を参考に書いたんですけどだめで悩んでたんですよー。 助かりました☆