gpt4 book ai didi

javascript - 拆分并保留数组中的子字符串

转载 作者:行者123 更新时间:2023-11-30 09:17:36 26 4
gpt4 key购买 nike

有没有一种方法可以拆分某个字符,然后将该字符保留在数组中。

例如,"hello ??? world"??? 上拆分会得到 ["hello ", "???", "world "].

这与给出 [ "hello ", "world"] 的 JavaScript split 方法不同(它不保留子字符串中的 ???)。

到目前为止,这是我对一些测试用例的了解,但我不确定使用什么来保留子字符串。

var splitter = (str) => {
return str.split('???');
}

// Tests
console.log(splitter("this is some text ???") === ["this is some text ", "???"])
console.log(splitter("this is ??? text???") === ["this is ", "???", " text", "???"])
console.log(splitter("this is some text") === ["this is some text"])
console.log(splitter("(???)") === ["(", "???", ")"])
console.log(splitter(" ") === [" "])
console.log(splitter(" ??? ") === [" ", "???", " "])
console.log(splitter("??????") === ["???", "???"])
console.log(splitter("?????????") === ["???", "???", "???"])
console.log(splitter("(??????") === ["(", "???", "???"])

最佳答案

因为 split接受正则表达式,匹配中捕获的组将包含在输出中,您可以只 split在一组捕获的 \?\?\? 上. (因为 ? 是正则表达式中的特殊字符,表示文字 ? ,您必须先通过 \ 将其转义。)

然后,要过滤掉空匹配项,请使用 .filter(Boolean)关于结果:

var splitter = (str) => (
str.split(/(\?\?\?)/)
.filter(Boolean)
);

另请注意,由于数组是对象,因此新创建的数组永远不会是 ===。到另一个,例如 <anything> === ['anything else']永远false - 要比较值,首先通过 stringify 对数组进行字符串化或 join .

    var splitter = (str) => {
return JSON.stringify(
str.split(/(\?\?\?)/)
.filter(Boolean)
);
}

// Tests
console.log(splitter("this is some text ???") === JSON.stringify(["this is some text ", "???"]))
console.log(splitter("this is ??? text???") === JSON.stringify(["this is ", "???", " text", "???"]))
console.log(splitter("this is some text") === JSON.stringify(["this is some text"]))
console.log(splitter("(???)") === JSON.stringify(["(", "???", ")"]))
console.log(splitter(" ") === JSON.stringify([" "]))
console.log(splitter(" ??? ") === JSON.stringify([" ", "???", " "]))
console.log(splitter("??????") === JSON.stringify(["???", "???"]))
console.log(splitter("?????????") === JSON.stringify(["???", "???", "???"]))
console.log(splitter("(??????") === JSON.stringify(["(", "???", "???"]))

关于javascript - 拆分并保留数组中的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53993014/

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