アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちは。
strの右から2文字を取り出したいのですがうまくいきません。
どこが間違ってますでしょうか?
strの文字列の長さはそのときによって違います。

function test(){
str="12345"
alert(str = str.substr(-0,2));
}

A 回答 (2件)

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
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/03/12 19:59

本来 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 確認済み)
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/03/12 20:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!