如何在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 中拆分整数