0

为什么会match产生split不同的结果?这是在 Actionscript 3.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,用于检索字符串上正则表达式的一个或多个匹配项。


split将通过您的正则表达式拆分字符串,并保留带括号的组 - 作为单独的条目。因此,在拆分时,匹配项与它们之间的字符串分开,该字符串为空 - 因此是您的结果。

于 2012-07-12T03:36:53.370 回答