【问题标题】:How to remove everything after particular character如何在特定字符后删除所有内容
【发布时间】:2015-07-28 19:17:38
【问题描述】:

我有一个字符串如下:

Documents for 047-428583 > FOLDER A > FOLDER D

我想在执行特定操作时删除> FOLDER D

我尝试使用如下子字符串,但它会删除> 之后的所有内容

 var data = $("#extend").text();
 $("#extend").text(data.substring(0, data.indexOf('>')));

我已经使用了this,但在我的情况下,我有多个相同的字符,所以我不能使用它。我猜!

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    使用 lastIndexOf 代替:

    https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/lastIndexOf

    $("#extend").text(data.substring(0, data.lastIndexOf('>') - 1));
    

    【讨论】:

    • 也许 lastIndexOf-1 用于额外的空间
    • .slice 通常比.substring 更受欢迎。比如.slice是否支持"abc".slice(0, -1) == "ab"
    • 好吧 substring 也不能给我烤饼干,但它仍然适用于 substring
    【解决方案2】:

    您可以将text() 值除以> 字符,然后删除结果数组中的最后一个元素:

    $("#extend").text(function(i, val) {
        var arr = val.split('>');
        arr.pop();
        return arr.join(' > ');
    });
    

    Example fiddle

    【讨论】:

    • 没问题,很乐意提供帮助。
    【解决方案3】:

    您可以拆分然后重新加入:

     var data = $("#extend").text().split('>').pop();
     data.join(" > ");
    

    编辑

    正如评论所说,pop() 方法返回最终字符串,此代码不正确。正确答案是@Rory McCrossan 写道:https://stackoverflow.com/a/31674474/5035890

    【讨论】:

    • 这将出错 - data 将是一个没有 join 方法的字符串。
    • 确实,pop() 方法返回的是最终字符串。您的回答更好,但我们同时回答:D
    • 没问题 :) 最好编辑您的答案,使其正确。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    • 2015-03-15
    • 2021-11-26
    • 1970-01-01
    • 2012-10-19
    相关资源
    最近更新 更多