• ベストアンサー

Javascriptで文字列操作

こんにちは。 strの右から2文字を取り出したいのですがうまくいきません。 どこが間違ってますでしょうか? strの文字列の長さはそのときによって違います。 function test(){ str="12345" alert(str = str.substr(-0,2)); }

質問者が選んだベストアンサー

  • ベストアンサー
  • wolv
  • ベストアンサー率37% (376/1001)
回答No.1

function test(){ str="12345" alert(str.substr(str.length-2)); } こうやるのが簡単だと思います。 ・-0は、負の数ではなく、0として扱われると思いますよ。 ・「alert("12345".substr(-1,2))」も「12」と表示されてしまいました。^^;

参考URL:
http://tohoho.wakusei.ne.jp/js/index.htm
piyora
質問者

お礼

こんばんわ!ありがとうございます。 ばっちりできました! なるほどなるほど、です。 とほほ、を参考に書いたんですけどだめで悩んでたんですよー。 助かりました☆

その他の回答 (1)

  • leaz024
  • ベストアンサー率75% (398/526)
回答No.2

本来 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 確認済み)

piyora
質問者

お礼

ありがとうございます! なるほど、IEのバグだったんですねー。 サンプルのとおり書いてもできないはずです。 なるほど、sliceでもできますね。 原因がわかってすっきりです。 どうもありがとうございました☆

関連するQ&A