首页 > 解决方案 > JS/ES6 - 将字符串拆分为数组,将元素保存在数组中(大小写密集)

问题描述

我正在尝试创建一个函数,该函数采用字符串和分隔符并将字符串拆分为数组,同时保留分隔符,对搜索使用不区分大小写,并保留原始大小写。

例如,函数签名应如下所示:

advanced_split("Test Round Start", "St")

它应该返回:

["Te", "st", " Round ", "St", "art"]

请注意,拆分是使用不区分大小写的方式完成的,但原始字符串中的大小写会保留在输出数组中。

标签: javascriptarraysecmascript-6split

解决方案


这会做到的。

function advanced_split(string, delimiter) {
   return string.split(new RegExp(`(${delimiter})`, 'i'));
}

advanced_split("Test Round Start", "St") // ["Te", "st", " Round ", "St", "art"]

它使用捕获组来提取每个拆分的分隔符部分,保留大小写。正则表达式的i标志意味着它将不区分大小写。

值得指出的是,为了使这个函数更加健壮,你应该在分隔符上使用正则表达式引用函数,否则函数可能会在正则表达式中有特殊字符的分隔符字符串上崩溃。


推荐阅读