web-dev-qa-db-ja.com

数値に変換された文字列が実際にActionScriptの数値であるかどうかを確認する最も簡単な方法

これが理にかなっているかどうかはわかりませんが、返されるサーバー値が実際に数値であるかどうかを確認する必要があります。現在、すべての数値が文字列として返されます。つまり、7ではなく「7」です。

文字列値が実際に数値に変換できるかどうかを確認する最も簡単な方法は何ですか?

14
Bachalo

これを行う最も簡単な方法は、実際に文字列を数値に変換し、それがNaNであるかどうかをテストすることです。 Flex APIリファレンスを見ると、最上位のNumber()関数は、メソッドに渡された文字列をNumberに変換できない場合、NaNを返すと言っています。

幸い、Flex(一種)はisNaN()関数を使用してこれを行います。あなたがする必要があるのは:

var testFlag:Boolean = isNaN( someStringThatMightBeANumber );

testFlagがfalseの場合、文字列は数値に変換できます。それ以外の場合は変換できません。

編集

Strictモードでコンパイルすると、上記は機能しません。代わりに、次のように、最初にNumberに変換してから、NaNを確認する必要があります。

var testFlag:Boolean = isNaN( Number( someStringThatMightBeANumber ) );
24
Dan

これをテストしていませんが、これは機能するはずです:

if( isNaN(theString) ) {
   trace("it is a string");
} else {
    trace("it is a number");
}

AS3および/またはstrictモード(back2dosで指摘されている)を使用している場合、コンパイルするには、最初に数値に変換する必要があります。

if( isNaN(Number(theString)) ) {
   trace("it is a string");
} else {
    trace("it is a number");
}
16
OneNerd

この質問に対する回答のほとんどには、大きな欠陥があります。 Number(null)またはNumber(undefined)またはNumber( "")を取得すると、すべてが0を返し、「isanumber」と評価されます。代わりに次のようなものを試してください。

function isANumber( val:* ):Boolean {
    return !(val === null || val === "" || isNaN(val));
}
4
Justin

RegExpパス:

function stringIsAValidNumber(s: String) : Boolean {
    return Boolean(s.match(/^[0-9]+.?[0-9]+$/));
}
3
OXMO456

値を数値に変換できるかどうかを確認する別の方法は次のとおりです。

var ob:Object = {a:'2',b:3,c:'string'};

for( var v:* in ob){
 var nr:Number = ob[v];
 trace(ob[v]+" "+(nr === Number(nr)))
}

これは以下をトレースします:

2 true
3 true
string false
1
dki

これにより、StringNumberに変換されます。これは、基本的に64ビットの浮動小数点数です。

_var val:Number = Number(sourceString);
_

sourceStringStringの有効なNumber表現でない場合、valはNaN(数値ではありません)になります...その値をチェックしますwith isNaN ... _val == NaN_は完全に理解できない理由でfalseを返すため... int(val) == valを使用してそれが整数値であるかどうかを確認できます.。。

グリーツ

back2dos

0
back2dos

数字だけを残したい関数にこれを入れてください
joy_edit1はTextInputオブジェクト(スパーク)です

//is a number check
if( isNaN(Number(joy_edit1.text)) ) {
  joy_edit1.text = "";
  return void;
}
0
Rama

あなたはactionscriptでそれに気付くことができます:

trace(int('7')); // will return 7

そして

trace(int('a')); // will return 0

したがって、ゼロを除いて、文字列が数値であるかどうかを実際に確認できるようになりました

0
afewcc

アドビのネイティブソリューションを使用する必要があります。

parseInt および parseFloat メソッド。

IsNaNの説明も読んでください。

値がNaN(数値ではない)の場合はtrueを返します。 isNaN()関数は、数式が数値に正常に評価されるかどうかを確認するのに役立ちます。 isNaN()の最も一般的な使用法は、parseInt()およびparseFloat()関数から返される値をチェックすることです。 NaN値は、「数値ではない」値を表すNumberデータ型の特別なメンバーです。

簡単な実装は次のとおりです。

function isANumber(value:String):Boolean {
    return !isNaN(parseFloat(value));
}
0
Ilya Gazman