使用正则表达式拆分以创建空字符串

时间:2018-07-13 10:55:46

标签: regex actionscript-3 flex

我正在尝试生成元素数组,这些元素可以是文本,也可以是“图像块”。

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。

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

1 个答案:

答案 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);
  }
}