Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 如何使用特殊关键字将字符串拆分为子字符串?_Angular_String_Typescript_Split_Substring - Fatal编程技术网

Angular 如何使用特殊关键字将字符串拆分为子字符串?

Angular 如何使用特殊关键字将字符串拆分为子字符串?,angular,string,typescript,split,substring,Angular,String,Typescript,Split,Substring,我必须将字符串拆分为数组。当它找到由“@+关键字”表示的特殊子字符串时,它必须拆分。关键字示例: @阿尔法 @贝塔 @萝莉 输入: "AAHSD@alphaHDHDG@alphaSGTDHDGT@betaSDGSDFHDG@alphaASFAGF@lolliSFDSFG@alphaSGHSHSF@lolliGA" 所需输出 [A,A,H,S,D,@alpha,H,D,D,G,@alpha,S,G,T,D,H,D,G,T,@beta,S,D,G,G,S,D,F,H,D,G,@alpha, A、

我必须将字符串拆分为数组。当它找到由“@+关键字”表示的特殊子字符串时,它必须拆分。关键字示例:

  • @阿尔法
  • @贝塔
  • @萝莉

    输入:

    "AAHSD@alphaHDHDG@alphaSGTDHDGT@betaSDGSDFHDG@alphaASFAGF@lolliSFDSFG@alphaSGHSHSF@lolliGA"

    所需输出

    [A,A,H,S,D,@alpha,H,D,D,G,@alpha,S,G,T,D,H,D,G,T,@beta,S,D,G,G,S,D,F,H,D,G,@alpha, A、 S,F,A,G,F,@lolli,S,F,D,S,F,G,@alpha,S,G,H,S,H,S,F,@lolli,G,A]


    • 使用正则表达式是一项很好的任务

      在您的例子中,正则表达式看起来像:
      @(alpha | beta | loli)

      您可以迭代匹配集合并使用匹配索引来剪切所需的字符串

      或者直接使用:

      'AAHSD@alphaHDHDG@alphaSGTDHDGT@betaSDGSDFHDG@alphaASFAGF@lolliSFDSFG@alphaSGHSHSF@lolliGA'.split(/@(alpha|beta|lolli)/)
      
      这很简单 您可以将其从大写字母中拆分,以获得如下所示的预期结果:-

      'AAHSD@alphaHDHDG@alphaSGTDHDGT@betaSDGSDFHDG@alphaASFAGF@lolliSFDSFG@alphaSGHSHSF@lolliGA'.split(/(?=[A-Z])/);
      

      已经有了,你试过什么了?请参考这个如果有三个以上的关键字怎么办?然后你必须手动添加它们,最多几百个就可以了。作为一名开发人员,如果你需要添加你所做的事情,我不会说“你必须手动添加它们”。您保存信息的方式和使用的算法有很多种,但源数据是源数据,或者是经过编码的,或者是从某处加载的。由开发人员决定在他/这里的情况下什么最有效。是的,这是解决方案之一,但不是一个有效的解决方案。请检查我的答案以了解更多信息。它将涵盖所有关键词。如果不定义需求和输入数据,您无法判断解决方案。目前,您还不确定中间是否有低案例数据。而您的解决方案在返回时并不完整”D@alpha“例如,需要额外清洁的地方。@AlexanderTrakhimenok这听起来不错。这是真的,我需要手动添加它们,但现在还可以。当我看到它们增加时,我会花时间考虑一些更具伸缩性的东西。我会尝试一下,让你知道。很抱歉,我没有正确指定,可能还有小写字母。