Flashゲームプログラミング講座 for ActionScript3.0

 

文字列について

 


■文字列について

 
■文字列のデータ型について
 
文字列は、プリミティブ型となります。
 
基本的で単純なデータ型です。
 
文字列は、文字の集合体とも考えられますが、実際はオブジェクトとしては機能しません。
 
例えば、文字列を参照渡しする事はできません。
 
文字列を他の変数に渡すと、文字列全体が複製され、新しい文字列となります。
 
■文字コードについて
 
ActionScript3.0 では、Unicode で動作します。
 
テキストの読み込みや、テキストの出力などの処理には、UTF-8 が採用されます。
 

■String クラスについて

 
String クラスは、文字列用のクラスです。
 
■文字列から String クラスのプロパティやメソッドを利用する
 
文字列の後に、ドット演算子や配列アクセス演算子を記述すると、その瞬間だけ String オブジェクトに変換されます。
 
文字列に対して、あたかも String クラスのプロパティメソッドが存在するかのように、アクセスできます。
 
 

 

文字列を作成する

 
 


■String コンストラクタについて

 
String コンストラクタは、使用する事は無いでしょう。
 
文字列を作成する場合は、文字列リテラルを使用します。
 
String コンストラクタを使用すると、オブジェクトではなく、文字列を生成する事ができます。
 
ActionScript 2.0 以前の場合は、こちらで解説しています。
 
new String ( "文字列" ) :String
第01引数(略可)String文字列を指定する。
戻り値 String第01引数で指定した文字列が得られる。
 
文字列を作成する

// ------------------------------------------------------------
// 文字列を作成する
// ------------------------------------------------------------
var str:String = new String("あいうえお");

// 出力テスト
trace(typeof(str)); // "string"
trace(str); // "あいうえお"
 

■文字列リテラルについて

 
文字列を作成するには、文字列リテラルを使用します。
 
文字列全体を、シングルクォーテーション『' '』 か ダブルクォーテーション『" "』でくくります。
 
文字列リテラルを使って、文字列を作成する

// 文字列を作成する
var str:String = 'あいうえお';
 
文字列リテラルを使って、文字列を作成する

// 文字列を作成する
var str:String = "かきくけこ";
 
■文字列中にクォーテーションマークを利用する
 
' '』 でくくった場合、文字列内に『 ' 』と記述する事はできません。
 
かわりに、『 \' 』と記述します。
 
" "』 でくくった場合、文字列内に『 " 』と記述する事はできません。
 
かわりに、『 \" 』と記述します。
 
エスケープ文字を使用して、文字列中にクォーテーションを利用する

var str:String;

str = '<element attribute = "value" >';
str = "<element attribute = 'value' >";

str = '<element attribute = \'value\' >';
str = "<element attribute = \"value\" >";
 
■シングルクォーテーションとダブルクォーテーションの違いについて
 
必要となるエスケープ文字が変化するだけです。
 
C 言語のように、シングルクォーテーションを使って、1文字を表現する事はできません。
 
CGI スクリプトのように、ダブルクォーテーションを使って、変数の中身を展開する事はできません。
 

■文字列の連結について

 
■文字列と文字列の連結について
 
連結演算子『 + 』『 += 』を使用すると、文字列同士を連結する事ができます。
 
2つの文字列を連結し、新しい1つの文字列が生成されます。
 
文字列の最後尾に、任意の文字列を連結する

// ------------------------------------------------------------
// 文字列を作成する
// ------------------------------------------------------------
var str:String = "あいうえお";

// ------------------------------------------------------------
// 文字列の最後尾に、任意の文字列を連結する
// ------------------------------------------------------------
str += "かきくけこ";

// 出力テスト
trace(str); // "あいうえおかきくけこ"
 
文字列同士を連結し、新しい文字列を生成する

// ------------------------------------------------------------
// 文字列を作成する
// ------------------------------------------------------------
var str0:String = "あいうえお";
var str1:String = "かきくけこ";

// ------------------------------------------------------------
// 文字列同士を連結し、新しい文字列を生成する
// ------------------------------------------------------------
var str2:String = str0 + str1;

// 出力テスト
trace(str2); // "あいうえおかきくけこ"
 
■数値と文字列の連結について
 
「数値」と「文字列」を連結すると、結果は「文字列」となります。
 
「数値」と「文字列」を連結した場合の動作を確認する

// 文字列を作成する
var str:String = 123 + "あいう";

// 出力テスト
trace(str); // "123あいう
 
■数値の計算と、文字列の連結が混在している場合
 
例えば、以下のような連結を行います。
 
数値の計算と、文字列の連結が混在している場合

// 文字列を作成する
var str:String = 1 + 2 + 3 + "あいう" + 49 + 58 + 67 + "かきく";

// 出力テスト
trace(str); // "6あいう495867かきく"
 
左から順番に計算されます。
 
「 1 + 2 + 3 」までは、数値同士の計算です。
 
それ以降の「 "あいう" + 49 + 58 + 67 + "かきく" 」は、文字列としての連結となります。
 
丸括弧 () を付けると、先に計算を発生させる事ができます。
 
数値の計算と、文字列の連結が混在している場合は、数値の計算部分に、できるだけ丸括弧 () を付けておくといいでしょう。
 
「数値」の計算を先に行いたい場合は、丸括弧を付ける

// 文字列を作成する
var str:String = (1 + 2 + 3) + "あいう" + (49 + 58 + 67) + "かきく";

// 出力テスト
trace(str); // "6あいう174かきく"
 

■文字列の比較について

 
■文字列同士が一致しているか調べる
 
厳密等価演算子『 === 』を使用すると、文字列同士が一致しているか調べる事ができます。
 
文字列同士が一致しているか調べる

// ------------------------------------------------------------
// 文字列を作成する
// ------------------------------------------------------------
var str0:String = "あいうえお";
var str1:String = "あいうえお";

// ------------------------------------------------------------
// 文字列が一致しているか調べる
// ------------------------------------------------------------
var result:Boolean = (str0 === str1);

// 出力テスト
trace(result); // true
 
■文字列同士を比較する
 
比較演算子『 < 』『 > 』を使用すると、文字列同士を比較する事ができます。
 
文字コードの大小を比較します。
 
localeCompare() メソッドを使って比較する事もできます。
 
文字列同士を比較する

// ------------------------------------------------------------
// 文字列を作成する
// ------------------------------------------------------------
var str0:String = "あああああ";
var str1:String = "ああああい";

// ------------------------------------------------------------
// 文字列を比較する
// ------------------------------------------------------------
if(str0 === str1){

	trace("厳密に等しい");

}else if(str0 < str1){

	trace(str0 + " < " + str1);

}else if(str0 > str1){

	trace(str0 + " > " + str1);

}
 


 

String クラスのプロパティについて

 


■String クラスのプロパティ


String クラスには、以下のプロパティがあります。
 
プロパティ 説明
length int 文字の総数を取得する
 
 


■length プロパティ


文字の総数を取得するには、length プロパティを使用します。
 
文字の総数を調べる

// 文字列を作成する
var str:String = "あいうえお";

// 文字の総数を取得
var num:int = str.length;

// 出力テスト
trace(num); // 5
 


 

String クラスのメソッドについて

 


■String クラスのメソッド一覧


String クラスには、以下のメソッドがあります。
 
メソッド 説明
String.fromCharCode() 文字コードを指定して、文字列を取得する。
charAt() 位置を指定して、文字列から1文字を取得する。
charCodeAt() 位置を指定して、文字列から文字コードを取得する。
concat() 2つ以上の文字列を繋げて、新しい文字列を取得する。
slice() 開始位置と終了位置を指定して、新しい文字列を取得する。
substring() 開始位置と終了位置を指定して、新しい文字列を取得する。(逆指定可)
substr() 開始位置と個数を指定して、新しい文字列を取得する。
indexOf() 最先頭から文字列内を検索し、見つかった位置を取得する。
lastIndexOf() 最後尾から文字列内を検索し、見つかった位置を取得する。
localeCompare() 文字列同士を比較する。
toLowerCase() 大文字を小文字に変換した結果を取得する。(通常)
toUpperCase() 小文字を大文字に変換した結果を取得する。(通常)
toLocaleLowerCase() 大文字を小文字に変換した結果を取得する。(実行環境のロケールを考慮)
toLocaleUpperCase() 小文字を大文字に変換した結果を取得する。(実行環境のロケールを考慮)
 
■正規表現に対応しているメソッド
 
メソッド 説明
split() 指定したワードで文字列を分割し、結果を配列で取得する。
search() 文字列内を検索し、マッチした位置を取得する。
match() 文字列内を検索し、マッチした文字列を取得する。
replace() 文字列を置換した結果を、新しい文字列として取得する。
 
 


■String.fromCharCode() メソッド

 
文字コードを指定して、文字列を取得するには、String.fromCharCode() メソッドを使用します。
 
Unicode を指定します。
 
String.fromCharCode( 文字コード ... ) :String
可変引数(略可)Number文字コードを指定する。可変引数から複数の文字コードの指定が可能。
戻り値 String文字列が得られる。存在しない場合、空文字が得られる。
 
■取得例
 
文字コードを指定して、1文字を取得する。

// 文字コードを指定して、1文字を取得する
var c0:String = String.fromCharCode(0x41);
var c1:String = String.fromCharCode(0x3042);

// 出力テスト
trace(c0); // "A"
trace(c1); // "あ"
 
文字コードを順番に指定して、文字列を取得する。

// 文字コードを順番に指定して、文字列を取得する。
var str:String = String.fromCharCode(0x41,0x42,0x43,0x44,0x45,0x46,0x47);

// 出力テスト
trace(str); // "ABCDEFG"
 

■charAt() メソッド

 
位置を指定して、文字列から1文字を取得するには、charAt() メソッドを使用します。
 
String.charAt( 位置 ) :String
第01引数(略可)Number位置を指定する。デフォルトは 0
戻り値 String1文字だけ格納された文字列が得られる。存在しない場合、空文字が得られる。
 
■取得例
 
位置を指定して、文字列から1文字を取得する。

// 文字列を作成
var str:String = "あいうえお";

// 位置を指定して、文字列から1文字を取得する
var c0:String = str.charAt(1);
var c1:String = str.charAt(3);

// 出力テスト
trace(c0); // "い"
trace(c1); // "え"
 

■charCodeAt() メソッド

 
位置を指定して、文字列から文字コードを取得するには、charCodeAt() メソッドを使用します。
 
Unicode が得られます。
 
String.charCodeAt( 位置 ) :Number
第01引数(略可)Number位置を指定する。デフォルトは 0
戻り値 Number文字コードが得られる。存在しない場合、NaN 値が得られる。
 
■取得例
 
位置を指定して、文字列から文字コードを取得する。

// 文字列を作成
var str:String = "あいうえお";

// 位置を指定して、文字列から文字コードを取得する
var c0:Number = str.charCodeAt(0);
var c1:Number = str.charCodeAt(3);

// 出力テスト
trace(c0); // 12354 (0x3042)
trace(c1); // 12360 (0x3048)
 
任意の文字コードを取得する。

// 'あ' の文字コードを取得
var c:Number = 'あ'.charCodeAt();

// 出力テスト
trace(c); // 12354 (0x3042)
 

■concat() メソッド

 
2つ以上の文字列を繋げて、新しい文字列を取得するには、concat() メソッドを使用します。
 
連結演算子を使用した方が、高速で動作します。
 
String.concat( 文字列 ... ) :String
可変引数(略可)String連結したい文字列を指定。引数の最先頭から最後尾の順番で結合される。
戻り値 String新しい文字列が得られる。
 
■使用例
 
2つの文字列を結合して、新しい文字列を取得する。

// 文字列を作成
var str0:String = "あいうえお";
var str1:String = "かきくけこ";

// 文字列を結合して、新しい文字列を取得する
var str2:String = str0.concat(str1);

// 出力テスト
trace(str2); // "あいうえおかきくけこ"
 
4つの文字列を結合して、新しい文字列を取得する。

// 文字列を結合して、新しい文字列を取得する
var str:String = "あいう".concat("え" , "おか" , "き" , "くけこ");

// 出力テスト
trace(str); // "あいうえおかきくけこ"
 

■slice() メソッド

 
開始位置と終了位置を指定して、新しい文字列を取得するには、slice() メソッドを使用します。
 
substring() メソッドと違い、開始位置と終了位置を、逆に指定する事はできません。
 
第02引数で指定する終了位置は、取得対象に含まれません。
 
String.slice( 開始位置 , 終了位置 ) :String
第01引数(略可)Number開始位置を指定。(0 から始まる番号)デフォルトは 0
第02引数(略可)Number終了位置を指定。(0 から始まる番号)省略した場合は最後尾まで。
マイナス値を指定すると「length + 第02引数」 の位置。(-1で最後尾は含まれない)
戻り値 String新しい文字列が得られる。
 
■使用例
 
開始位置と終了位置を指定して、新しい文字列を取得する

// 文字列を作成
var str0:String = "あいうえおかきくけこ";

// 開始位置と終了位置を指定して、新しい文字列を取得する
var str1:String = str0.slice(2,5);

// 出力テスト
trace(str1); // "うえお"
 

■substring() メソッド

 
開始位置と終了位置を指定して、新しい文字列を取得するには、substring() メソッドを使用します。
 
slice() メソッドと違い、開始位置と終了位置を、逆に指定しても動作します。
 
終了位置は、取得対象に含まれません。
 
String.substring( 開始位置 , 終了位置 ) :String
第01引数(略可)Number開始位置を指定。(0 から始まる番号)デフォルトは 0
第02引数(略可)Number終了位置を指定。(0 から始まる番号)省略した場合は最後尾まで。
第01引数より小さい値を指定した場合、第02引数が開始位置となり、第01引数が終了位置となる。
戻り値 String新しい文字列が得られる。
 
■使用例
 
開始位置と終了位置を指定して、新しい文字列を取得する

// 文字列を作成
var str0:String = "あいうえおかきくけこ";

// 開始位置と終了位置を指定して、新しい文字列を取得する
var str1:String = str0.substring(2,5);

// 出力テスト
trace(str1); // "うえお"
 

■substr() メソッド

 
開始位置と個数を指定して、新しい文字列を取得するには、substr() メソッドを使用します。
 
String.substr( 開始位置 , 個数 ) :String
第01引数(略可)Number開始位置を指定。(0 から始まる番号)デフォルトは 0
第02引数(略可)Number個数を指定。省略した場合は最後尾まで。0 以下の値を指定すると空文字が得られる。
戻り値 String新しい文字列が得られる。
 
■使用例
 
開始位置と個数を指定して、新しい文字列を取得する

// 文字列を作成
var str0:String = "あいうえおかきくけこ";

// 開始位置と個数を指定して、新しい文字列を取得する
var str1:String = str0.substr(5,3);

// 出力テスト
trace(str1); // "かきく"
 

■indexOf() メソッド

 
最先頭から文字列内を検索し、見つかった位置を取得するには、indexOf() メソッドを使用します。
 
最先頭からではなく、途中から検索を開始したい場合は、第02引数に開始位置を指定します。
 
String.indexOf( "検索ワード" , 検索開始位置 ) :int
第01引数(略可)String検索ワードを指定。
第02引数(略可)Number検索を開始する位置を指定。デフォルトは 0
戻り値 intワードが見つかった場合、位置が得られる。ワードが見つからなかった場合、-1 が得られる。
 
■使用例
 
最先頭から文字列内を検索し、見つかった位置を取得する

// 文字列を作成
var str:String = "---あいう-----";

// 最先頭から文字列内を検索する
var pos:Number = str.indexOf("あいう");

// 出力テスト
trace(pos); // 3
 
本文全体を、最先頭から順番に検索する

// 検索本文
var source:String = "--あいう------あいう--あいう------あいう--------";

// 検索ワード
var search:String = "あいう";

// 検索位置
var pos:Number = 0;

while(true){

	// 指定位置から文字列内を検索する
	pos = source.indexOf(search,pos);

	// 見つからなかった場合終了
	if(pos == -1) break;

	// 出力テスト
	trace("pos:" + pos);

	// 次の検索開始位置
	pos += search.length;
}
 

■lastIndexOf() メソッド

 
最後尾から文字列内を検索し、見つかった位置を取得するには、lastIndexOf() メソッドを使用します。
 
最後尾からではなく、途中から検索を開始したい場合は、第02引数に開始位置を指定します。
 
例えば、文字列の最後尾から調べるなら、( length - (検索ワードの文字数) ) を指定します。
 
例えば、文字列の最後尾の1つ前から調べるなら、( length - (検索ワードの文字数) - 1 ) を指定します。
 
String.lastIndexOf( "検索ワード" , 検索開始位置 ) :int
第01引数(略可)String検索ワードを指定。
第02引数(略可)Number検索を開始する位置を指定。デフォルトは最後尾から。マイナス値を指定した場合、見つからない。
戻り値 intワードが見つかった場合、位置が得られる。ワードが見つからなかった場合、-1 が得られる。
 
■使用例
 
最後尾から文字列内を検索し、見つかった位置を取得する

// 文字列を作成
var str:String = "-----あいう---";

// 最後尾から文字列内を検索する
var pos:Number = str.lastIndexOf("あいう");

// 出力テスト
trace(pos); // 5
 
本文全体を、最後尾から順番に検索する

// 検索本文
var source:String = "--あいう------あいう--あいう------あいう--------";

// 検索ワード
var search:String = "あいう";

// 検索位置
var pos:Number = source.length;

while(pos >= 0){

	// 指定位置から文字列内を検索する
	pos = source.lastIndexOf(search,pos);

	// 見つからなかった場合終了
	if(pos == -1) break;

	// 出力テスト
	trace("pos:" + pos);

	// 次の検索開始位置
	pos -= search.length;
}
 

■localeCompare() メソッド

 
文字列同士を比較するには、localeCompare() メソッドを使用します。
 
第02引数以降は、実装されていません。指定すると、コンパイルエラーとなります。
 
最後に比較した、文字コードの減算値が得られます。
 
例えば、"あ" と "い" と比較した場合、0x3042 - 0x3044 ⇒ -2 となります。
 
比較演算子を使って、調べる事もできます。
 
String.localeCompare( "比較文字列" , ... ) :int
第01引数(略可)String比較文字列を指定。
可変引数(略可)*未実装
戻り値 int第01引数の方が大きいなら負数、一致するなら 0、小さいなら正数が得られる。
 
■使用例
 
文字列同士を比較する

// 文字列を作成
var str0:String = "あああああ";
var str1:String = "ああああい";

// 文字列同士を比較する
var result:int = str0.localeCompare(str1);

// 出力テスト
trace(result); // -2
 

■toLowerCase() メソッド

 
大文字を小文字に変換した結果を取得するには、toLowerCase() メソッドを使用します。
 
■使用例
 
大文字を小文字に変換する

// 文字列を作成
var str0:String = "AbCdEfG";

// 大文字を小文字に変換する
var str1:String = str0.toLowerCase();

// 出力テスト
trace(str1); // "abcdefg"
 

■toUpperCase() メソッド

 
小文字を大文字に変換した結果を取得するには、toUpperCase() メソッドを使用します。
 
■使用例
 
小文字を大文字に変換する

// 文字列を作成
var str0:String = "AbCdEfG";

// 小文字を大文字に変換する
var str1:String = str0.toUpperCase();

// 出力テスト
trace(str1); // "ABCDEFG"
 

■toLocaleLowerCase() メソッド

 
大文字を小文字に変換した結果を取得するには、toLocaleLowerCase() メソッドを使用します。
 
現状は、toLowerCase() メソッドと、同じ結果が得られます。
 
実行環境のロケールを考慮するよう想定されていますが、未実装です。
 
■使用例
 
大文字を小文字に変換する

// 文字列を作成
var str0:String = "AbCdEfG";

// 大文字を小文字に変換する(実行環境のロケールを考慮)
var str1:String = str0.toLocaleLowerCase();

// 出力テスト
trace(str1); // "abcdefg"
 

■toLocaleUpperCase() メソッド

 
小文字を大文字に変換した結果を取得するには、toLocaleUpperCase() メソッドを使用します。
 
現状は、toUpperCase() メソッドと、同じ結果が得られます。
 
実行環境のロケールを考慮するよう想定されていますが、未実装です。
 
■使用例
 
小文字を大文字に変換する

// 文字列を作成
var str0:String = "AbCdEfG";

// 小文字を大文字に変換する(実行環境のロケールを考慮)
var str1:String = str0.toLocaleUpperCase();

// 出力テスト
trace(str1); // "ABCDEFG"
 

■split() メソッド

 
指定したワードで文字列を分割し、結果を配列で取得するには、split() メソッドを使用します。
 
このメソッドは、正規表現に対応しています。
 
このメソッドを使用した場合、正規表現オブジェクトの中身は変化しません
 
String.split( 検索ワード , 分割制限 ) :Array
第01引数(略可)*検索ワードを指定。「文字列」や「正規表現オブジェクト」の指定が可能。空文字を指定した場合、1文字つずつ分割される。
第02引数(略可)Number分割を試みる回数の上限値を指定する。省略した場合、文字列の最後尾まで試みる。
戻り値 Array新しい配列が得られる。ワードが見つからなかった場合、0 番目に元の文字列がそのまま格納されている。
 
■使用例
 
指定したワードで文字列を分割し、結果を配列で取得する

// 文字列を作成
var str:String = "あ=いい=ううう=ええ=お";

// 文字列を分割し、配列を取得する
var ary:Array = str.split("=");

// 出力テスト
trace(ary); // [ "あ" , "いい" , "ううう" , "ええ" , "お" ]
 
指定したワードで文字列を、最大で2回まで分割し、結果を配列で取得する

// 文字列を作成
var str:String = "AAAandBBandCCCandandEEE";

// 文字列を最大で2回まで分割し、配列を取得する
var ary:Array = str.split("and" , 2);

// 出力テスト
trace(ary); // [ "AAA" , "BB" ]
 
正規表現を使って、文字列を分割し、結果を配列で取得する

// ------------------------------------------------------------
// 文字列を作成
// ------------------------------------------------------------
var str:String = "AAA--BB----CCC----------EEE";

// ------------------------------------------------------------
// 正規表現オブジェクトを作成
// ------------------------------------------------------------
var re:RegExp = new RegExp("[-]+","");

// ------------------------------------------------------------
// 文字列を分割し、配列を取得する
// ------------------------------------------------------------
var ary:Array = str.split(re);

// ------------------------------------------------------------
// 出力テスト
// ------------------------------------------------------------
trace(ary); // [ "AAA" , "BB" , "CCC" , "D" , "EEE" ]
 

■search() メソッド

 
マッチした位置を取得するには、search() メソッドを使用します。
 
このメソッドは、正規表現に対応しています。
 
このメソッドを使用した場合、正規表現オブジェクトの中身は変化しません
 
結果が 0 以上であるか調べると、match() メソッドよりも高速で、正規表現がマッチしていると判定する事ができます。
 
文字列の途中から調べる事はできません。
 
途中から調べたい場合、RegExp クラスのメソッドを使用します。
 
String.search( 検索ワード ) :int
第01引数(略可)*検索ワードを指定。「文字列」や「正規表現オブジェクト」の指定が可能。
戻り値 int正規表現がマッチする場合、開始位置が得られる。正規表現がマッチしなかった場合、-1 が得られる。
 
■使用例
 
検索ワードとマッチする位置を取得する

// 文字列を作成
var str:String = "あいうえおかきくけこさしすせそ";

// マッチする位置を取得する
var index:int = str.search("かきくけこ");

// 出力テスト
trace(index); // 5
 
正規表現とマッチする位置を取得する

// ------------------------------------------------------------
// 文字列を作成
// ------------------------------------------------------------
var str:String = "あいうえおかきくけこさしすせそ";

// ------------------------------------------------------------
// 正規表現オブジェクトを作成
// ------------------------------------------------------------
var re:RegExp = new RegExp("(か)(.+)(こ)","");

// ------------------------------------------------------------
// 正規表現とマッチする位置を取得する
// ------------------------------------------------------------
var index:int = str.search(re);

// マッチした
if(index >= 0){

	// ------------------------------------------------------------
	// 出力テスト
	// ------------------------------------------------------------
	trace(index); // 5

}
 

■match() メソッド

 
文字列内を検索し、マッチした文字列を取得するには、match() メソッドを使用します。
 
このメソッドは、正規表現に対応しています。
 
このメソッドを使用した場合、正規表現オブジェクトの中身は変化しません
 
真偽結果のみを得たい場合は、search() メソッドを使用した方が、高速に動作します。
 
String.match( 検索ワード ) :*
第01引数(略可)*検索ワードを指定。「文字列」や「正規表現オブジェクト」の指定が可能。
戻り値 *マッチする場合、オブジェクトが得られる。マッチしない場合、null が得られる。
 
■戻り値 (繰り返しフラグ "g" の指定が無い場合)
 
マッチしなかった場合、null が得られます。
 
マッチする場合、オブジェクトが得られます。
 
オブジェクトは、配列のように中身を取り出す事ができます。
 
0 番目には、マッチした全体の文字列が格納されています。
 
1 番目以降には、マッチした丸括弧 () 内の文字列が、順番に格納されています。
 
その他には、以下のプロパティが存在します。
 
プロパティ説明
indexNumber正規表現とマッチした文字列の位置。
inputStringマッチを試みた文字列全体。
 
正規表現とマッチした部分の文字列を取得する

// ------------------------------------------------------------
// 文字列を作成
// ------------------------------------------------------------
var str:String = "あいうえおかきくけこさしすせそ";

// ------------------------------------------------------------
// 正規表現オブジェクトを作成
// ------------------------------------------------------------
var re:RegExp = new RegExp("()(.+)()","");

// ------------------------------------------------------------
// 正規表現とマッチした部分の文字列を取得する
// ------------------------------------------------------------
var m:Object = str.match(re);

// マッチした
if(m){

	// ------------------------------------------------------------
	// 出力テスト
	// ------------------------------------------------------------
	// 全体マッチ
	trace(m[0]); // "かきくけこ"

	// 丸括弧内のマッチ
	trace(m[1]); // "か"
	trace(m[2]); // "きくけ"
	trace(m[3]); // "こ"

	// その他のプロパティ
	trace(m.input); // "あいうえおかきくけこさしすせそ"
	trace(m.index); // 5

}
 
■戻り値 (繰り返しフラグ "g" の指定がある場合)
 
マッチしなかった場合、null が得られます。
 
マッチする場合、配列が得られます。
 
繰り返しマッチした回数だけ、配列の要素数が増えます。
 
配列の中には、 0 番目から順番に、マッチした部分の文字列が格納されています。
 
正規表現の、丸括弧 () 内とマッチした結果を、取得する事はできません。
 
繰り返しフラグが存在する場合の動作を確認する

// ------------------------------------------------------------
// 文字列を作成
// ------------------------------------------------------------
var str:String = "あいうえおかきくけこさしすせそ";

// ------------------------------------------------------------
// 正規表現オブジェクトを作成
// ------------------------------------------------------------
var re:RegExp = new RegExp("[あ-ん]{5}","g");

// ------------------------------------------------------------
// 正規表現とマッチした部分の文字列を取得する
// ------------------------------------------------------------
var m:Array = str.match(re);

// マッチした
if(m){

	// ------------------------------------------------------------
	// 出力テスト
	// ------------------------------------------------------------
	// マッチ総数
	trace(m.length); // 3

	// 1回目の全体マッチ
	trace(m[0]); // "あいうえお"

	// 2回目の全体マッチ
	trace(m[1]); // "かきくけこ"

	// 3回目の全体マッチ
	trace(m[2]); // "さしすせそ"

}
 

■replace() メソッド

 
文字列を置換した結果を、新しい文字列として取得するには、replace() メソッドを使用します。
 
このメソッドは、正規表現に対応しています。
 
このメソッドを使用した場合、正規表現オブジェクトの中身は変化しません
 
String.replace( 検索 , 置換 ) :String
第01引数(略可)*検索文字列を指定する。「文字列」もしくは「正規表現オブジェクト」の指定が可能。
第02引数(略可)*置換文字列を指定する。「文字列」もしくは「コールバック関数」の指定が可能。
戻り値 String置換後の結果を、新しい文字列として得られる。
 
■第01引数 (文字列を指定した場合)
 
第01引数に文字列を指定した場合、一度だけ置換されます
 
文字列を検索し、置換した結果を取得する

// ------------------------------------------------------------
// 文字列を作成
// ------------------------------------------------------------
var str0:String = "あい▲▲▲えお";

// ------------------------------------------------------------
// "▲▲▲" を "う" に置換する
// ------------------------------------------------------------
var str1:String = str0.replace("▲▲▲","う");

// ------------------------------------------------------------
// 出力テスト
// ------------------------------------------------------------
trace(str1); // "あいうえお"
 
■第01引数 (正規表現オブジェクトを指定した場合)
 
正規表現には、丸括弧 () を含める事ができます。
 
検索と置換を、最後まで繰り返したい場合は、"g" フラグを追加します。
 
正規表現オブジェクトを作成(繰り返しフラグ付き)

// 正規表現オブジェクトを作成(繰り返しフラグ付き)
var re:RegExp = new RegExp("(.)","g");
 
■第02引数 (文字列を指定した場合)
 
第02引数に、文字列型を指定した場合の動作です。
 
第01引数に正規表現オブジェクトを指定した場合、以下のドルエスケープ文字の記述が可能です。
 
エスケープ文字説明
$$$ 文字の代替。
$1 ~ $99n 番目の丸括弧とマッチした文字列を展開する。
$& (U+0026)マッチした文字列全体を展開する。
$` (U+0060)最先頭から、マッチした直前までの文字列を展開する。
$' (U+0027)マッチした直後から、最後尾までの文字列を展開する。
 
ドルエスケープ文字の展開を確認する

// 文字列を作成
var str0:String = "あいうえおかき";

// 正規表現オブジェクトを作成
var re:RegExp = new RegExp("()()()","");

// 文字列を置換する
var str1:String = str0.replace(re,"| left:$` match:$& p1:$1 p2:$2 p3:$3 right:$' |");

// 出力テスト
trace(str1); // "...| left:あい match:うえお p1:う p2:え p3:お right:かき |..."
 
■第02引数 (コールバック関数を指定した場合)
 
第02引数に、関数型を指定した場合の動作です。
 
コールバック関数の仕様は、以下の通りです。
 
第01引数から、マッチした全体の文字列が得られます。
 
第02引数以降は、可変引数となります。
 
正規表現内の、丸括弧 () とマッチした文字列が、順番に得られます。
 
丸括弧の数だけ、引数を用意する必要があります。
 
(最終引数 - 1)から、マッチした文字列の位置が得られます。
 
最終引数から、文字列全体が得られます。
 
戻り値からは、置換後の文字列を返します。
 
正規表現オブジェクトに、繰り返しフラグ "g" の指定がある場合、コールバック関数は、繰り返し呼び出されます。
 
■使用例
 
正規表現オブジェクトを使って、繰り返し検索しすべて置換する

// ------------------------------------------------------------
// 文字列を作成
// ------------------------------------------------------------
var str0:String = "□●●□□●●●□";

// ------------------------------------------------------------
// 正規表現オブジェクトを作成(繰り返しフラグ付き)
// ------------------------------------------------------------
var re:RegExp = new RegExp("□","g");


// ------------------------------------------------------------
// "□" を "■" に置換する(文字列指定)
// ------------------------------------------------------------
var str1:String = str0.replace(re,"■");

// ------------------------------------------------------------
// 出力テスト
// ------------------------------------------------------------
trace(str1); // "■●●■■●●●■"


// ------------------------------------------------------------
// "□" を "■" に置換する(コールバック関数指定)
// ------------------------------------------------------------
var str2:String = str0.replace(re,function ( m:String , index:Number , str:String ) :String {

	// 出力テスト
	trace("index:" + index);

	// 置換する文字列を返す
	return "■";
});

// ------------------------------------------------------------
// 出力テスト
// ------------------------------------------------------------
trace(str2); // "■●●■■●●●■"
 
丸括弧の展開動作を確認する

// ------------------------------------------------------------
// 文字列を作成
// ------------------------------------------------------------
var str0:String = "★★★http://sub.example.com/aaa/bbb/ccc.html★★★";

// ------------------------------------------------------------
// 正規表現オブジェクトを作成
// ------------------------------------------------------------
var re:RegExp = new RegExp("([a-z]*:)[/]*([^/]+)/([^?#]*)","");


// ------------------------------------------------------------
// ドルエスケープ文字を使って、丸括弧内を展開する
// ------------------------------------------------------------
var str1:String = str0.replace(re,"「$1」「$2」「$3」");

// ------------------------------------------------------------
// 出力テスト
// ------------------------------------------------------------
trace(str1); // "★★★「http:」「sub.example.com」「aaa/bbb/ccc.html」★★★"


// ------------------------------------------------------------
// コールバック関数を使って、丸括弧内を展開する
// ------------------------------------------------------------
var str2:String = str0.replace(re,function ( m:String , p1:String , p2:String , p3:String , index:Number , str:String ) :String {

	// 出力テスト
	trace(arguments);

	// 置換する文字列を返す
	return "「" + p1 + "」「" + p2 + "」「" + p3 + "」";
});

// ------------------------------------------------------------
// 出力テスト
// ------------------------------------------------------------
trace(str2); // "★★★「http:」「sub.example.com」「aaa/bbb/ccc.html」★★★"
 
置換機能を使わずに、繰り返し検索として活用する

// ------------------------------------------------------------
// HTML 文字列を作成
// ------------------------------------------------------------
var text_html:String = 
'<html>\n' +
'  <body>\n' +
'    <img src="http://sub.example.com/graphics/aaa.jpg">\n' +
'    <img src="http://sub.example.com/graphics/bbb.jpg">\n' +
'    <img src="http://sub.example.com/graphics/ccc.jpg">\n' +
'  </body>\n' +
'</html>';

// ------------------------------------------------------------
// 正規表現オブジェクトを作成(繰り返しフラグ付き)
// ------------------------------------------------------------
var re:RegExp = new RegExp('<img[ \t\r\n]+[^>]*src[ \t\r\n]*=[ \t\r\n]*"([^"]+)"',"g");

// ------------------------------------------------------------
// 繰り返し検索(置換機能を無視)
// ------------------------------------------------------------
text_html.replace(re,function ( m:String , p1:String , index:Number , str:String ) :void {

	// 出力テスト
	trace(arguments);
	trace("index:" + index);
	trace("p1:" + p1);
	trace(" --- ");

});
 
 

 

数値型から文字列に変換する

 
 


■String() 関数を使用する

 
任意のデータを、文字列に変換するには、String() 関数を使用します。
 
String ( Object ) :String
第01引数(略可)Object任意のデータを指定。
戻り値 String文字列に変換した結果が得られる
 
String() 関数を使って、文字列型に変換する

// 数値を作成する
var value:Number = 123.456;

// 文字列に変換する
var str:String = String(value);

// 出力テスト
trace(str); // "123.456"
trace(typeof(str)); // "string"
 

■連結演算子を使って、空文字列を連結する

 
任意のデータを、空文字列と連結すると、文字列に変換する事ができます。
 
空文字と連結して、文字列に変換する

// 数値を作成する
var value:Number = 123.456;

// 空文字と連結して、文字列に変換する
var str:String = "" + value;

// 出力テスト
trace(str); // "123.456"
trace(typeof(str)); // "string"
 


 

文字列リテラルのエスケープについて

 


■文字列リテラルのエスケープについて

 
■エスケープ文字について
 
エスケープシーケンスの一覧です。
 
表記Unicode説明
\\U+005Cバックスラッシュ(円記号)
\bU+0008バックスペース
\fU+000Cフォームフィード
\nU+000Aラインフィード(改行コード)
\rU+000Dキャリッジ・リターン(改行コード)
\tU+0009水平タブ
\vU+000B垂直タブ
\'U+0027シングルクォーテーション
\"U+0022ダブルクォーテーション
 
エスケープ文字を含めた文字列を作成する

var str:String = "\tあいうえお\n\tかきくけこ";
 
■ Unicodeスカラ値について
 
\uFFFF と記述すると、Unicode 1文字分を表現できます。
 
FFFF の部分には、ユニコードを 16 進数で表記します。
 
サロゲートペアとなるコードは、2つに分けて表記します。
 
例えば、U+10FFFF 文字は、\uD83F\uDFFF と表記します。
 
Unicodeスカラ値を含めた文字列を作成する

var str:String = "\u3042 \u3044 \u3046 \u3048 \u304a";
 
■ Hexスカラ値について
 
\xFF と記述すると、0 ~ 255 までの1文字分を表現できます。
 
FF の部分には、0 ~ 255 までの値を、16 進数で表記します。
 
Hexスカラ値を含めた文字列を作成する

var str:String = "\x41 \x44 \x47 \x4a \x4c";