コメントの表示 | RSS フィード

演算子とストリングの使用について

比較演算子でストリングが比較されるのは、オペランドが両方ともストリングである場合だけです。このルールの例外としては、厳密な等価 (===) 演算子があります。1 つのオペランドのみがストリングの場合、両方のオペランドが数値に変換され、それらの数値比較が実行されます。数値演算子の詳細については、数値演算子の使用を参照してください。

等価演算子 (==) と比較演算子 (> >=<、および <=) によるストリングへの影響は、独自の値を操作するときは異なります。

比較演算子は、ストリングを比較してアルファベット順に最初のストリングを判断します。大文字のストリングは、小文字のストリングに優先されます。つまり、"Egg" が "chiken" よりも先になります。

var c:String = "chicken";
var e:String = "Egg";
trace(c < e); // false
var riddleArr:Array = new Array(c, e);
trace(riddleArr); // chicken,Egg
trace(riddleArr.sort()); // Egg,chicken

この ActionScript では、Array クラスの sort() メソッドが、配列の内容の順序をアルファベット順に再変更します。値 "Egg" が値 "chicken" よりも先になるのは、大文字の E が小文字の c よりも先になるためです。大文字と小文字とは無関係にストリングを比較する場合は、ストリングを比較する前に大文字または小文字に変換する必要があります。比較演算子の詳細については、等価演算子についておよび関係演算子および等価演算子の使用参照してください。

toLowerCase() または toUpperCase() メソッドを使用して、ストリングを比較する前に同じ大文字または小文字に変換することができます。次の例では、両方のストリングが小文字に変換されて比較されます。この結果、chiken が egg よりも先になります。

var c:String = "chicken";
var e:String = "Egg";
trace(c.toLowerCase() < e.toLowerCase()); // true

メモ

 

比較演算子では、2 つのストリングのみが比較されます。たとえば、1 つのオペランドが数値である場合、演算子は値を比較しません。オペランドのどちらか一方だけがストリングである場合、両方のオペランドが数値に変換され、数値として比較されます。

演算子を使用してストリングを操作できます。加算 (+) 演算子を使用して、2 つのストリングオペランドを連結することができます。trace ステートメントを書いたときに、加算演算子を使用してストリングを連結しました。たとえば、次のように入力するとします。

var myNum:Number = 10;
trace("The variable is " +  myNum + ".");

このコードは、[出力] パネルに次のような情報を出力します。

The variable is 10.

この例では、trace ステートメントは + 演算子を使用して加算ではなく連結を行います。Flash でストリングと数値を扱う場合、数値として加算するのではなく、連結される場合があります。

たとえば、異なる変数の 2 つのストリングを 1 つのテキストフィールドに連結するとします。次の ActionScript コードでは、変数 myNum がストリングと連結し、ステージ上の [myTxt] テキストフィールドにストリングが表示されます。

this.createTextField("myTxt", 11, 0, 0, 100, 20);
myTxt.autoSize = "left";
var myNum:Number = 10;
myTxt.text = "One carrot. " + myNum + " large eggplants.";
myTxt.text += " Lots of vegetable broth.";

このコードは、次の情報をインスタンス名 myTxt と共にテキストフィールドに出力します。

One carrot. 10 large eggplants. Lots of vegetable broth.

この例では、加算 (+) 演算子および加算代入 (+=) 演算子を使用してストリングを連結する方法を示します。3 行目のコードでは、加算演算子を使用して myNum 変数の値をテキストフィールドに連結し、4 行目のコードでは加算代入演算子を使用して、テキストフィールドの既存の値にストリングを連結します。

テキストストリングのオペランドの 1 つのみが実際にストリングである場合、Flash は他のオペランドをストリングに変換します。そのため、値 myNum は前述の例のストリングに変換されます。

メモ

 

ストリングの先頭、または末尾に入力されたスペースは、ストリングのリテラル部分として扱われます。


Comments


Fumio Nonaka が Oct 13, 2005 の 6:12 PM に追加:
[問題箇所]:
「比較演算子でストリングが比較されるのは、オペランドが両方ともス
トリングである場合だけです。このルールの例外としては、厳密な等価
(===) 演算子があります。1 つのオペランドのみがストリングの場合、
両方のオペランドが数値に変換され、それらの数値比較が実行されま
す。」

比較演算子は、文字列と数値も比較できます。また、厳密な等価演算子
(===)は、データタイプが異なればfalseを返し、オペランドのデータタ
イプを変換しません。

[修正案]:
「比較演算子は、両方のオペランドのデータタイプが異なる場合、一方
のオペランドを他方のタイプに合わせて変換します。一方のオペランド
がストリングで他方が数値の場合、Flashはストリングのオペランドを数
値に変換して、それらの数値比較が実行されます。」

参考: http://livedocs.macromedia.com/flash/8/main/
00001265.html
http://www.fumiononaka.com/TechNotes/Flash/
Errata_HelpFlash8.html#00001265

 

RSS フィード | このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート

現在のページ: http://livedocs.adobe.com/flash/8_jp/main/00001265.html