如何使用JavaScript/TypeScript将字符串转换为数组
如何使用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.' ] …为了在我的角度模板中使用它:
[
'1. Lorem Ipsum.',
'2. Lorem Ipsum.',
'3. Lorem Ipsum.'
]
[
'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
结果,但是是的。