如何在javascript中的两个分隔符之间拆分字符串?

Posted

技术标签:

【中文标题】如何在javascript中的两个分隔符之间拆分字符串?【英文标题】:How to split string between two separators in javascript? 【发布时间】:2012-11-15 15:57:17 【问题描述】:

我知道如何使用多个分隔符进行拆分,但我不知道如何将字符串拆分为数组两个字符之间。所以:

var myArray = "(text1)(text2)(text3)".split(???)
//=> myArray[0] = "text1", myArray[1] = "text2", myArray[2] = "text3"

我应该在“???”中输入什么?还是我应该使用其他方法?

制作“)(”分隔符不起作用,因为我想用各种分隔符(例如“>”)分割数组,因此列出所有可能的分隔符组合非常不切实际

【问题讨论】:

【参考方案1】:
.split(/[()]+/).filter(function(e)  return e; );

this demo

【讨论】:

请提供解释,没有这个答案不是特别有用。 我认为代码说明了一切。这正是我一直在寻找的。我们也可以使用 "(text1)(text2)(text3)".split(/[()]+/).filter(String);摆脱那个讨厌的小空字符串。【参考方案2】:

使用 javascript 无法在不丢失任何字符的情况下在特定字符之间使用拆分,因为您需要对此进行查看(不支持)。 但是,由于您似乎希望将文本 inside 括在括号中,因此您可以只 match 不包含括号的最长字符串:

myArray = "(text1)(text2)(text3)".match(/[^()]+/g)

【讨论】:

这个答案对于 OP 想要的行为是最明智的,(不是简单的字符串拆分)但会失败,例如"(text(1)(text(2)"。您也可以将左括号设为匹配,然后将map 去掉; .match(/\([^)]+/g).map(function (e) return e.slice(1);); @PaulS 当然,但这似乎相当无效。并且嵌套正确的东西无论如何都无法匹配。我的意思是,为什么支持(text(1)(text(2) 而不是(1)text)(2)text)(te(1)xt)(te(2)xt) 是的。我试图思考如何在不需要循环的情况下完成所有这些操作,但是第二个 ( 绝对不会是本节的结尾,而第二个 ) 可能是。不过,这不是世界上最大的问题。 @PaulS。允许任意嵌套是世界上最大的问题,如果你想用 JavaScript 正则表达式解决它;)

以上是关于如何在javascript中的两个分隔符之间拆分字符串?的主要内容,如果未能解决你的问题,请参考以下文章

如何阅读管道分隔线 |来自一个文件并在两个不同的 ArrayList 中拆分整数

拆分最后两个单词并在javascript中过滤

如何在 bash shell 中将一个字符串拆分为多个字符串,至少用一个空格分隔?

字符串入门十八讲合集四

字符串入门十八讲合集四

Pandas - 如果不存在分隔符,则使用默认值拆分列