【问题标题】:How to remove part of a string?如何删除字符串的一部分?
【发布时间】:2010-08-25 18:08:20
【问题描述】:

假设我有test_23,我想删除test_

我该怎么做?

_之前的前缀可以改变。

【问题讨论】:

标签: javascript string


【解决方案1】:

我最喜欢的做法是“拆分和弹出”:

var str = "test_23";
alert(str.split("_").pop());
// -> 23

var str2 = "adifferenttest_153";
alert(str2.split("_").pop());
// -> 153

split() 使用指定的分隔符字符串将字符串拆分为字符串数组。
pop() 从数组中删除最后一个元素并返回该元素。

【讨论】:

  • 我的 C 程序员对在这个简单的拆分/弹出操作中创建和销毁的对象数量感到畏缩 :) 可能:一个数组,2 个字符串,另一个数组,另一个字符串。
  • @xgbi:是的,JavaScript 和 C 开发人员的理念截然不同;-)
  • 您可以在答案中添加使用alert(str.split("_")[1]); 的可能性,因为.split 创建了一个包含两个元素的数组,[0]"_" 之前和[1] 之后。这实际上是我正在寻找的,但你的回答帮助我到达那里^^
  • @FernandoSilva 然后,假设有两个或更多“_”,我们将获得 3 项数组并且也能够使用/删除第三个,对吗?顺便说一句,+1。正是我想要的。
  • @TheLightSabrix 看看它的工作原理,这比尝试用文字解释要容易得多。 jsbin.com/keleguzacu/edit?js,console
【解决方案2】:

如果你想删除部分字符串

let str = "try_me";
str.replace("try_", "");
// me

如果你想替换部分字符串

let str = "try_me";
str.replace("try_", "test_");
// test_me

【讨论】:

    【解决方案3】:

    假设你的字符串总是以'test_'开头:

    var str = 'test_23';
    alert(str.substring('test_'.length));
    

    【讨论】:

    • 不以test开头怎么办?
    • 使用替换,但如果有多次出现,这将不起作用。 str.replace("test_", "");将返回一个新字符串,其中删除了所有出现的“test_”,所以如果只保证出现一次,那么它应该没问题。但是,如果有多个,我会使用 str = str.substring(0, str.indexOf("test_)" + str.substring(str.indexOf("test_") + 5, str.length); 我知道这一点是一篇旧帖子,但如果有人遇到它,可能会在某个地方至少帮助一个人。
    【解决方案4】:
    string = "test_1234";
    alert(string.substring(string.indexOf('_')+1));
    

    即使字符串没有下划线,它也可以工作。试试http://jsbin.com/

    【讨论】:

    • 这有更少的开销,但比安迪 E 的答案更多的代码。两者都有效,但我更喜欢这种方法。
    【解决方案5】:

    我认为最简单的方法是:

    var s = yourString.replace(/.*_/g,"_");
    

    【讨论】:

    • 天哪,这有 20 票。有人真的尝试过吗?当然,这是行不通的。这被盲目复制粘贴了多少次?