Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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
如何使用JavaScript/TypeScript将字符串转换为数组_Javascript_Arrays_Angular_Regex_Typescript - Fatal编程技术网

如何使用JavaScript/TypeScript将字符串转换为数组

如何使用JavaScript/TypeScript将字符串转换为数组,javascript,arrays,angular,regex,typescript,Javascript,Arrays,Angular,Regex,Typescript,如何使用JavaScript/TypeScript将字符串(实际上是一个有序列表)转换为数组?不幸的是,这是后端返回的结果 字符串如下所示: [ '1. Lorem Ipsum.', '2. Lorem Ipsum.', '3. Lorem Ipsum.' ] 同侧眼线。2.乱数假文。3.同侧眼线 我想要这样的数组: [ '1. Lorem Ipsum.', '2. Lorem Ipsum.', '3. Lorem Ipsum.' ] …为了在我的角度模板中使用它:

如何使用JavaScript/TypeScript将字符串(实际上是一个有序列表)转换为数组?不幸的是,这是后端返回的结果

字符串如下所示:

[
  '1. Lorem Ipsum.',
  '2. Lorem Ipsum.',
  '3. Lorem Ipsum.'
]
  • 同侧眼线。2.乱数假文。3.同侧眼线
  • 我想要这样的数组:

    [
      '1. Lorem Ipsum.',
      '2. Lorem Ipsum.',
      '3. Lorem Ipsum.'
    ]
    
    …为了在我的角度模板中使用它:

    <div>
      <ol>
        <li *ngFor="let entry of entries">{{entry}}</li>
      </ol>
    </div>
    
    
    {{entry}
    
    我已经用
    split()
    JSON.parse()
    试过了。。我不知道用什么字符分割数组

    例如
    console.log(this.entries.split(“”))返回一个包含字符串中每个单词的数组。我还尝试使用其他字符分割字符串,但找不到正确的字符。

    编辑:同时使用以保留1。2.三,

    也许有更好的正则表达式(我的正则表达式很差) 但是对于这个精确的例子来说,这个解决方案完全取决于你应用的正则表达式。但使用的方法是拆分的

    var text = "1. Lorem Ipsum. 2. Lorem Ipsum. 3. Lorem Ipsum.";
    var regex = new RegExp("(?=[0-9].)"); 
    text.split(regex);
    
    =>输出

    Array(3) [ "1. Lorem Ipsum. ", "2. Lorem Ipsum. ", "3. Lorem Ipsum." ]
    

    如果你不能有一个更好的句子结尾,那么你当前的
    你必须建立一些智能夹板和过滤

    类似这样的工作原理:

    text = "1. Lorem Ipsum. 2. Lorem Ipsum. 3. Lorem Ipsum."
    arr = text.split(".")
    res = text.split(".").map((item, i)=> (i%2 === 0) ? `${item}.${arr[i+1]}.` : "undefined" ).filter(item=> !item.includes("undefined"))
    
    显然,这并没有优化,但我相信您可以从这里开始

    试试这个


    console.log(“1.Lorem Ipsum.2.Lorem Ipsum.3.Lorem Ipsum.”.match(/\d+\d+/g))
    类似的操作应该可以:

    var a='1。乱数假文。2.乱数假文。3.同侧眼线';
    var split=a.split(/\s(?=[0-9]/);
    console.log('output',split);//打印:[“1.Lorem Ipsum.”,“2.Lorem Ipsum.”,“3.Lorem Ipsum.”
    
    regex基本上说:

    \s
    -匹配空白字符

    (?=[0-9])
    -查看(正面-表示向前)数字字符


    .split()
    方法将分割应用于匹配。但是,必须先查找,以确定匹配后是否存在数字。

    您已经尝试过分割,为什么它不起作用?您可以修改字符串吗?因此您可以为
    split()
    添加spesific delimeter。您可以使用split()和“pop”索引字符串。@crosx我更新了我的问题。@RapSherlock否,当前API返回如下字符串:(哇。我没想到它会变得这么复杂。^^。他们真的需要更改后端。^^。根据其他答案,正则表达式也是一种实现这一点的方法,但你绝对正确。让他们从后端发送数组是最好的答案。他们至少可以发送一个更好的句子结尾,而不是
    …因此你可以做一个例子“1.Lorem Ipsum;2.Lorem Ipsum;3.Lorem Ipsum。”.split(“;”)以获得一个数组,该数组将如何结束。感谢您的提示。您也可以使用
    [0-9]\.([A-Za-z\])+\。
    来“修剪”"数组可以解释正则表达式吗?\d+以一个数字开始,并且\d+在。-->一个数字开始一个新的查找。g使这个正则表达式全局并查找所有matches@Codehan25,在此页面中:如果将鼠标悬停在reg expr上,将显示工具提示,其中包含每个表达式的简要说明,则可以检查任何reg expr解决方案有效,但我将使用您的方法,直到后端返回一个干净的数组。非常感谢!请注意不要使用空格匹配(如我下面的解决方案:P),您将在数组中以不同模式的项结束,即在上面的示例中,前两项以空格结束,但最后一项不以空格结束。根据您的使用情况,这可能会影响您,也可能不会影响您。您可以始终
    trim
    结果,但是是的。