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

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

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

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

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

【问题讨论】:

    标签: javascript html arrays regex string


    【解决方案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 正则表达式解决它;)
    猜你喜欢
    • 2011-08-22
    • 2018-01-06
    • 2021-10-09
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 2019-04-05
    • 1970-01-01
    • 2020-04-11
    相关资源
    最近更新 更多