我正在尝试生成元素数组,这些元素可以是文本,也可以是“图像块”。
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。
是否有一种简单的方法来更改正则表达式以避免将数组大小加倍?
答案 0 :(得分:2)
String.split(...)用提供的分隔符分割给定的字符串,然后搜索它们。
要找到与 RegEx 的所有匹配项,您需要使用 String.match(...)方法:
export const PORTAL_DATA = new InjectionToken<{}>('PortalData');
class ContainerComponent {
constructor(private injector: Injector, private overlay: Overlay) {}
attachPortal() {
const componentPortal = new ComponentPortal(
ComponentToPort,
null,
this.createInjector({id: 'first-data'})
);
this.overlay.create().attach(componentPortal);
}
private createInjector(data): PortalInjector {
const injectorTokens = new WeakMap<any, any>([
[PORTAL_DATA, data],
]);
return new PortalInjector(this.injector, injectorTokens);
}
}
class ComponentToPort {
constructor(@Inject(PORTAL_DATA) public data ) {
console.log(data);
}
}