如何删除字符串的一部分?

133
假设我有一个名为 test_23 的字符串,我想要去掉其中的 test_ 部分。
那么应该如何操作呢?
需要注意的是 _ 之前的前缀可能会发生变化。

也许你应该看一下JavaScript中的正则表达式(Regular Expressions in JavaScript):http://www.w3schools.com/jsref/jsref_obj_regexp.asp - Barranka
7个回答

190

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

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

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

split() 方法可以将一个字符串通过指定的分隔符拆分成字符串数组。
pop() 方法从数组中删除最后一个元素,并返回该元素。


37
我内心的 C 程序员对这个简单的拆分/弹出操作中创建和销毁的对象数量感到不安 :) 可能包括:一个数组、两个字符串、另一个数组、另一个字符串。 - Gui13
15
是的,JavaScript和C的开发者有着截然不同的哲学,哈哈。 - Andy E
5
你可以在你的答案中加入使用alert(str.split("_")[1]);的可能性,因为.split会创建一个包含两个元素的数组,[0]是分隔符之前的部分,[1]是分隔符之后的部分。这实际上是我正在寻找的,但是你的答案帮助了我到达那里^^ - Fernando Silva
1
@FernandoSilva 然后,如果有两个“_”或更多,我们会得到一个由三个项目组成的数组,并且能够使用/删除第三个项目,对吗?顺便说一句,+1。正是我在寻找的东西。 - The Light Sabrix
@TheLightSabrix 看一下它的工作情况,比尝试在文本中解释要容易得多。http://jsbin.com/keleguzacu/edit?js,console - Fernando Silva
如果字符串包含两个下划线就不起作用,但只想拆分到第一个! - Andris

77

如果你想要删除字符串的一部分

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

如果您想要替换字符串的一部分

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

如果您想替换所有匹配项,请使用 str.replaceAll("try_", ""); - di3

52

假设你的字符串始终以 'test_' 开头:

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

5
如果它不以“test”开头会怎样? - NullVoxPopuli
1
使用replace函数无法删除多个出现的字符串。如果只有一个出现,那么str.replace("test_", "");可以返回一个新的字符串,其中所有"test_"的出现都被删除了,所以这样做是可以的。然而,如果有多个出现,我会使用以下代码: str = str.substring(0, str.indexOf("test_)" + str.substring(str.indexOf("test_") + 5, str.length); 我知道这是一篇旧帖子,但如果有人遇到它,至少可以帮助某个人。 - George Xavier

24

我认为最简单的方法是:

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

13
string = "test_1234";
alert(string.substring(string.indexOf('_')+1));

即使字符串中没有下划线,这个方法仍然有效。请在http://jsbin.com/上尝试。


5
这种方法的开销较小,但代码比安迪·E的答案多。两种方法都可行,但我更喜欢这种方法。 - palswim

2

let text = 'test_23';
console.log(text.substring(text.indexOf('_') + 1));


0
你可以使用slice()字符串方法来删除字符串的开头和结尾。

const str = 'outMeNo';

const withoutFirstAndLast = str.slice(3, -2);
console.log(withoutFirstAndLast);// output-->  'Me'


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接