为什么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
变得“正确”的是什么?
答案 0 :(得分:4)
split
将字符串拆分为另一个字符串或正则表达式,如果参数是后一种情况,则保留所有带括号的组,这是您当前看到的行为。它根本不具有与match
相同的功能,用于检索字符串上正则表达式的一个或多个匹配。
split
将使用正则表达式拆分字符串,并将括号内的组保留为单独的条目。因此,在拆分时,匹配与它们之间的字符串保持独立,这是空的 - 因此是你的结果。