【问题标题】:How to remove a substring between two specific characters如何删除两个特定字符之间的子字符串
【发布时间】:2012-09-25 11:38:54
【问题描述】:

所以我有一个字符串:

"this is the beginning, this is what i want to remove/ and this is the end"

如何使用 Javascript 来定位逗号和正斜杠之间的字符串? (我也想去掉逗号和斜线)

【问题讨论】:

    标签: javascript regex substring


    【解决方案1】:
    string = string.replace( /,.*?\//, '' );
    

    regexp 中,, 匹配自身,.*? 匹配任何字符序列(由于? 修饰符,首选最短匹配),\/ 匹配斜杠。 (斜杠需要用反斜杠转义,因为它也用作正则表达式分隔符。不幸的是,JavaScript 不支持替代正则表达式文字分隔符,因此您只需要处理 leaning toothpick syndrome。)

    请注意,上面的代码删除了字符串中从 first 逗号到斜杠后面的 first 的所有内容。如果可能有多个逗号或斜杠,根据您想要发生的情况,有多种方法可以修改正则表达式的行为。例如:

    • .replace( /,.*\//, '' ) 删除从 first 逗号到 last 斜杠的所有内容;
    • .replace( /^(.*),.*?\//, '$1' ) 删除 last 逗号后跟斜线到下一个斜线的所有内容;
    • .replace( /^(.*),.*\//, '$1' ) 删除字符串中 last 逗号后跟斜线直到 last 斜线的所有内容;
    • .replace( /,[^\/]*\//, '' ) 与原始正则表达式相同,即删除从第一个逗号到后面第一个斜杠的所有内容(即使中间有其他逗号);
    • .replace( /,[^,\/]*\//, '' ) 删除第一个以逗号开头并以斜杠结尾的子字符串,中间不包含任何逗号或斜杠
    • .replace( /^(.*),[^,\/]*\//, '$1' ) 删除 last 子字符串,该子字符串以逗号开头并以斜杠结尾,中间没有逗号或斜杠;和
    • .replace( /^,[^,\/]*\//g, '' ) 删除 所有 以逗号开头并以斜杠结尾且中间没有逗号或斜杠的子字符串。

    还请注意,由于正则表达式语法的历史怪癖,. 元字符实际上将匹配任何字符除了换行符 ("\n")。大多数正则表达式实现都提供了一些方法来关闭这个怪癖并使. 真正匹配所有字符,但由于某种原因,JavaScript 不匹配。如果您的字符串可能包含换行符,您应该用一些workaround 替换上面的正则表达式中所有出现的.,例如[\s\S](适用于大多数PCRE 风格的正则表达式引擎)或[^](更短,但特定于JavaScript 的正则表达式风格)。

    【讨论】:

    • 很高兴知道我可以提供帮助。附言。如果您认为您的问题已得到充分回答,请单击此答案旁边的复选标记(或其他答案之一,如果您愿意)将其标记为已接受。谢谢!
    • 为什么要在示例中使用? 修饰符?
    • @Knu:因为我有点假设 OP 想要删除逗号和直到 next 斜杠的所有内容,而不是直到 last 的所有内容i> 字符串中的斜线。这个问题实际上并没有具体说明如果有多个斜杠会发生什么,但这样对我来说更有意义。当然,如果保证字符串中的斜线不能超过一个,那么它不会有任何区别。 (如果有多个逗号,我们甚至不讨论会发生什么......)
    【解决方案2】:

    由于您的问题被标记为正则表达式,您似乎想要.replace

    return str.replace(/, this is what i want to remove\//, "");
    

    如果你不知道中间的字符串,使用

    /,(.+?)\//
    

    如果字符串也可以为空,则使用* 而不是+

    使用字符串函数,它会是

    var cpos = str.indexOf(","),
        spos = str.indexOf("/");
    if (cpos > -1 && spos > cpos)
        return str.substr(0, cpos)+str.substr(spos+1);
    

    【讨论】:

      【解决方案3】:
      return str.split(',')[1].split('/')[0];
      

      【讨论】:

        【解决方案4】:
        var commaIndex=str.indexOf(',')
        var slashIndex=str.indexOf('/')
        var finalString=str.substring(commaIndex,slashIndex)
        

        希望能成功

        【讨论】:

        • 这将返回逗号和斜杠之间的字符串。该问题要求将其删除。
        猜你喜欢
        • 2017-04-12
        • 2017-10-24
        • 2012-05-14
        • 1970-01-01
        • 2014-09-01
        • 2010-12-25
        • 2018-11-25
        • 2016-07-01
        • 1970-01-01
        相关资源
        最近更新 更多