使用 Regex 拆分创建空字符串

Split with Regex creating empty strings

我正在尝试生成一个元素数组,这些元素可以是文本,也可以是 "image block"。

var str : String = "";

for (var i : int = 0; i < 100; i++)
{
    str += (Math.random() > .5) ? "<img>amazed</img>" : "<img>happy</img>";
}

var arr : Array = str.split(/(<img>\w+<\/img>)/);

我希望数组的长度为 100,并且数组中的每个元素反映 <img>amazed</img><img>happy</img>。相反,长度为 201,其他每个元素都是一个空字符串。

是否有一种简单的方法来更改正则表达式以避免数组大小加倍?

String.split(...) 通过提供的分隔符拆分给定的字符串,而不是搜索它们。

为了找到与 RegEx 的所有匹配项,您需要使用 String.match(...) 方法:

var S:String = "";

for (var i:int = 0; i < 100; i++)
{
    S += (Math.random > .5)? "<img>amazed</img>": "<img>happy</img>";
}

// Pay attention to the greedy 'g' flag, if you don't set it,
// you will get the first match only as the result.
var R:RegExp = /<img>\w+<\/img>/g;
var A:Array = S.match(R);