サイトトップ

Director Flash 書籍 業務内容 プロフィール

Macromedia Flash非公式テクニカルノート

String.split()

ID: FN0110004 Product: Flash

Platform: All
Version: 5.0 and above

シンタックス
my_str.split(区切り文字[, 上限値])

引数
区切り文字   ストリング。my_strを分割する文字または文字列[*1]。

上限値   整数。配列に加えるエレメント数。この引数は、省略可能です。

[訳者註*1] Flash 5では、複数文字を指定すると正しく動作しません。後述[訳者註*3]と同じく、ECMA-262仕様に合致しませんので、バグでしょう。Flash MX(Flash Player 6)以降で、修正されました。

戻り値
配列。my_strのサブストリングが格納された配列。

説明
メソッド; Stringオブジェクト[*2]を、引数に指定した区切り文字の存在する位置でサブストリングに分割し、それらのサブストリングが格納された配列を返します。区切り文字空文字列("")を指定すると、ストリングのひと文字ずつを配列のエレメントに加えます。

区切り文字が未定義値(undefiend)の場合には、ストリング全体をひとつのエレメントとしてもつ配列が返されます[*3]。

[訳者註*2] Stringオブジェクトとありますが、もちろん""(ダブルクォーテーション)でストリングを直接記述しても、メソッドは使用できます。

[訳者註*3] Flash 5では、引数を指定しないと、デフォルトで","(カンマ)が区切り文字とされるようです。ECMA-262の15.5.4.14「String.prototype.split (separator, limit)」に定められた動作と異なりますので、バグと考えられます。Flash MX(Flash Player 6)以降で、修正されました。

なお、Flash 5におけるこのメソッドの問題を回避する方法として、上級者向けのテクニカルノート「String.splitメソッドを再定義する[上級テクニック]」があります。

Player
Flash 5以降。


以下の例では、5つのエレメントを格納した配列が返されます。

var my_str:String = "P,A,T,S,Y";
var my_array:Array = my_str.split(",");
for (var i = 0; i<my_array.length; i++) {
   trace(my_array[i]);
}

/* 出力:
P
A
T
S
Y
*/

つぎの例は、"P"と"A"のふたつのエレメントで構成された配列を返します。

var my_str:String = "P,A,T,S,Y";
var my_array:Array = my_str.split(",", 2);
trace(my_array);  // 出力: P,A

つぎのサンプルでは、区切り文字に空文字列("")を指定して、ストリングのひと文字ずつを配列のエレメントに格納しています。

var my_str:String = new String("Joe");
var my_array:Array = my_str.split("");
for (var i = 0; i<my_array.length; i++) {
   trace(my_array[i]);
}

/* 出力:
J
o
e
*/


[訳者註] String.split()メソッドとは逆に、配列エレメントを連結して文字列で返すメソッドとしてArray.join()があります。つぎのスクリプトは、文字列"Microsoft"の"s"を"$"に置換します。

var my_str:String = "Microsoft";
my_str = my_str.split("s").join("$");
trace(my_str);  // 出力: Micro$oft

出典
[ActionScript Language Reference] > [String.split()]

_____

作成者: 野中文雄
更新日: 2005年2月20日 Flash MX 2004のドキュメントにもとづいて修正
作成日: 2004年9月3日


Copyright © 2001-2006 Fumio Nonaka.  All rights reserved.