使用 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);
我正在尝试生成一个元素数组,这些元素可以是文本,也可以是 "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);