ストリング内の文字の分析と比較

ストリング内のすべての文字が、ストリング内のインデックス位置を持っています (整数)。最初の文字のインデックス位置は 0 です。たとえば、ストリング yellow 内の文字 y の位置は 0、文字 w の位置は 5 になります。

すべてのストリングには length プロパティがあります。これは、ストリング内の文字数と同じ値になります。

var companyStr:String = "adobe";
trace(companyStr.length); // 10

空のストリングと null ストリングはどちらも length がゼロです。

var firstStr:String = new String();
trace(firstStr.length); // 0

var secondStr:String = "";
trace(secondStr.length); // 0

ストリングに値が含まれていない場合、length は undefined に設定されます。

var thirdStr:String;
trace(thirdStr.length); // undefined

警告

 

ストリングに null バイト文字 (\0) が含まれている場合、ストリングの値はそこで切り詰められます。

文字コードを使用してストリングを定義することもできます。文字コードおよび文字エンコーディングの詳細については、ストリングおよび String クラスについてを参照してください。

次の例では、myStr という名前の変数を作成し、String.fromCharCode() メソッドに渡された ASCII 値に基づいてストリングの値を設定します。

var myStr:String = String.fromCharCode(104,101,108,108,111,32,119,111,114,108,100,33);
trace(myStr); // hello world!

上記のコードの fromCharCode() メソッドにリストされている各数字はそれぞれ 1 つの文字を表しています。たとえば、ASCII 値 104 は小文字の h を、ASCII 値 32 は空白文字を表します。

また、Unicode 値は 16 進数値から 10 進数値に変換する必要がありますが、次の ActionScript に示されているように、String.fromCharCode() メソッドを使用して変換することもできます。

// Unicode 0068 == "h"
var letter:Number = Number(new Number(0x0068).toString(10));
trace(String.fromCharCode(letter)); // h

次の例のように、ストリング内のさまざまな位置にある文字を調べることができます。

ストリングをループ処理するには :

  1. 新しい Flash ドキュメントを作成します。
  2. メインタイムラインのフレーム 1 に次の ActionScript を追加します。
    var myStr:String = "hello world!";
    for (var i:Number = 0; i < myStr.length; i++) {
        trace(myStr.charAt(i));
    }
    
  3. [制御]-[ムービープレビュー] を選択し、Flash ドキュメントをプレビューします。出力パネルに各文字が、別々の行に出力されます。
  4. 既存のこの ActionScript スクリプトコードを、各文字の ASCII 値を出力するように修正します。
    var myStr:String = "hello world!";
    for (var i:Number = 0; i < myStr.length; i++) {
        trace(myStr.charAt(i) + " - ASCII=" + myStr.charCodeAt(i));
    }
    
  5. 現在の Flash ドキュメントを保存し、[制御]-[ムービープレビュー]を選択して SWF ファイルをプレビューします。

    このコードを実行すると、次のように [出力] パネルに表示されます。

    h - ASCII=104
    e - ASCII=101
    l - ASCII=108
    l - ASCII=108
    o - ASCII=111
      - ASCII=32
    w - ASCII=119
    o - ASCII=111
    r - ASCII=114
    l - ASCII=108
    d - ASCII=100
    ! - ASCII=33
    

    ヒント

     

    また、String.split() メソッドを使用し、区切り文字として空のストリング ("") を入力することで、ストリングを文字の配列に分けることもできます (例 :var charArray:Array = myStr.split("");)。

演算子を使用してストリングを比較できます。ストリングでの演算子の使用の詳細については、演算子とストリングの使用についてを参照してください。

条件ステートメントでは、ifwhile などの演算子を使用できます。次の例では、演算子とストリングを使用して比較を行います。

2 つのストリングを比較するには :

  1. 新しい Flash ドキュメントを作成し、comparestr.fla という名前を付けて保存します。
  2. メインタイムラインのフレーム 1 に次の ActionScript を追加します。
    var str1:String = "Apple";
    var str2:String = "apple";
    if (str1 < str2) {
        trace("Uppercase letters sort first.");
    }
    
  3. Flash ドキュメントを保存し、[制御]-[ムービープレビュー] を選択して SWF ファイルをテストします。

次の例に示されているように、等価演算子 (==) と不等価演算子 (!=) を使用して、ストリングと他のタイプのオブジェクトを比較できます。

ストリングを他のデータ型と比較するには :

  1. 新しい Flash ドキュメントを作成し、comparenum.fla という名前を付けて保存します。
  2. メインタイムラインのフレーム 1 に次の ActionScript を追加します。
    var myStr:String = "4";
    var total:Number = 4;
    if (myStr == total) {
        trace("Types are converted.");
    }
    
  3. Flash ドキュメントを保存し、[制御]-[ムービープレビュー] を選択して SWF ファイルをテストします。

    ストリングと数字など、異なる 2 つのデータ型を比較する場合、Flash では比較できるようデータ型の変換を試みます。

厳密な等価演算子 (===) と厳密な不等価演算子 (!==) を使用して、両方の比較オブジェクトが同じタイプかどうかを検査できます。次の例では、厳密な比較演算子を使用して、値の比較の際に Flash によってデータ型の変換が試みられていないことを確認します。

厳密な型指定による比較を行うには :

  1. 新しい Flash ドキュメントを作成し、comparestrict.fla という名前を付けて保存します。
  2. メインタイムラインのフレーム 1 に次の ActionScript を追加します。
    var str1:String = "4";
    var str2:String = "5";
    var total:Number = 4;
    if (str1 !== total) {
        trace("Types are not converted.");
    }
    if (str1 !== str2) {
        trace("Same type, but the strings don't match.");
    }
    
  3. Flash ドキュメントを保存して、[制御]-[ムービープレビュー] を選択します。

ストリングへの演算子の使用の詳細については、演算子とストリングの使用についてを参照してください。

選択されたストリングとサブストリングを比較および取得する簡単なワードプロセッサを作成する方法を示す、サンプルのソースファイル "strings.fla" については、Flash サンプルページ (www.adobe.com/go/learn_fl_samples_jp) を参照してください。"Samples" zip ファイルをダウンロードし解凍して、"ActionScript2.0/Strings" フォルダに移動してサンプルにアクセスします。


 

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

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