gpt4 book ai didi

javascript - 如何将字符串拆分为前面不直接跟同类型字符的字符?

转载 作者:可可西里 更新时间:2023-11-01 02:08:03 24 4
gpt4 key购买 nike

假设我有一个字符串:"We.need..to...split.asap" .我想做的是用分隔符 . 分割字符串, 但我只想按第一个 . 拆分并包括任何经常性的. s 在后续 token 中。

预期输出:

["We", "need", ".to", "..split", "asap"]

在其他语言中,我知道这可以通过回顾 /(?<!\.)\./ 实现但遗憾的是 Javascript 不支持这样的功能。

我很想知道您对这个问题的回答。也许有一种巧妙的前瞻性使用目前让我回避?

我正在考虑反转字符串,然后重新反转标记,但这对于我想要的东西来说似乎工作量太大了......加上争议:How do you reverse a string in place in JavaScript?

感谢您的帮助!

最佳答案

这是 the answer by guest271314 的变体处理两个以上的连续定界符:

var text = "We.need.to...split.asap";
var re = /(\.*[^.]+)\./;
var items = text.split(re).filter(function(val) { return val.length > 0; });

它使用的细节是,如果拆分表达式包含捕获组,则捕获的项目包含在返回的数组中。这些捕获组实际上是我们唯一感兴趣的东西;标记都是空字符串,我们将其过滤掉。

编辑:不幸的是,这可能有一个小错误。如果要拆分的文本以定界符开头,它将包含在第一个标记中。如果这是一个问题,可以通过以下方式解决:

var re = /(?:^|(\.*[^.]+))\./;
var items = text.split(re).filter(function(val) { return !!val; });

(我认为这个正则表达式很丑陋,欢迎改进。)

关于javascript - 如何将字符串拆分为前面不直接跟同类型字符的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30609664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com