0

なぜ、異なる結果matchsplit生み出すのですか?これはActionscript3.0にありますが、これがAS3以外でも当てはまる場合は、その理由も知りたいと思います。

例:

var txt:String = "somethingorother";
var re:RegExp = /(\w{2,2})/g;
trace("\t txt.split = " + txt.split(re) + " -- " + txt.split(re).length);
trace("\t txt.match = " + txt.match(re) + " -- " + txt.match(re).length);

結果:

txt.split = ,so,,me,,th,,in,,go,,ro,,th,,er, -- 17
txt.match = so,me,th,in,go,ro,th,er -- 8

編集:

与えられた条件で、結果は同じ配列になると思います(この場合、match奇数の長さの最終エントリが見つからないことを除いてStrings)。なぜ余分なエントリがあるのsplitですか?「正しく」なっているsplit発見とは何ですか?match

4

1 に答える 1

4

split文字列を別の文字列または正規表現で分割し、引数が後者の場合(現在表示されている動作)の場合は、括弧で囲まれたグループを保持します。match文字列の正規表現の1つまたは複数の一致を取得するために使用される、まったく同じ機能を持つことを意図したものではありません。


split正規表現で文字列を分割し、括弧で囲まれたグループを個別のエントリとして保持します。したがって、分割するとき、一致はそれらの間の文字列とは別に保持されます。これは空です。したがって、結果が得られます。

于 2012-07-12T03:36:53.370 に答える