如何在JavaScript中删除冒号前的字符串部分?

175
如果我有一个字符串Abc: Lorem ipsum sit amet,我该如何使用JavaScript / jQuery 删除冒号(:)之前的字符串,包括冒号本身。例如上面的字符串将变成:Lorem ipsum sit amet

3
我添加了JavaScript标签,因为它与问题更相关,比jQuery更相关。 - Spudley
2个回答

407

这里不需要使用jQuery,普通的JavaScript就可以:

var str = "Abc: Lorem ipsum sit amet";
str = str.substring(str.indexOf(":") + 1);

或者,使用 .split().pop() 方法:

var str = "Abc: Lorem ipsum sit amet";
str = str.split(":").pop();

或者,正则表达式版本(有多个变体):

var str = "Abc: Lorem ipsum sit amet";
str = /:(.+)/.exec(str)[1];

2
很棒的答案,我喜欢不同的解决方案。 - Aardvark
33
请注意,如果字符串中有多个 :,第二个变体将返回跟在 最后一个 : 后面的字符串,而不是像其他变体一样返回跟在第一个 : 后面的字符串。JS 的 split() 方法中很遗憾没有类似 Python 中 .split(':', 1)[1] 的仅拆分指定次数的选项。(确实有一个可选的 number 参数,但它并不像任何合理的人所期望的那样工作。) - bobince
2
@bobince - 你说得对,我在这里有一个假设,即他的标签格式是一致的 label: something,如果不是这种情况,我会选择第一种选项。 - Nick Craver
2
你可以使用分隔符来拆分和连接以删除一些元素。"Abc:Lorem_ipsum_sit_amet".split(':').slice(1).join('.'); - Amritesh Anand
嗨,在jQuery中,我有这个变量,我想删除字符“|”后面的所有内容。我已经能够通过使用以下代码来定位字符串: var str = $('.order-product-list.align-left.box-content.any-1-1 > ul > li:nth-child(1) > div > dl.align-left > dd:nth-child(8)');我该怎么做?该字符后面的内容是动态的,取决于网页上的用户。我想隐藏/删除“|”后面的最后一部分。 - R. Srour
根据@AmriteshAnand的评论中提到的,如果有多个,你需要这样做:(join应该使用split()中使用的相同分隔符) var str = "Abc: Lorem ipsum :sit: amet"; str = str.split(":").slice(1).join(":") - undefined

12
作为对Nick的回答的跟进。如果您的字符串包含多个:,并且您只想删除第一个出现之前的子字符串,则可以使用以下方法:
var str = "Abc:Lorem:ipsum:sit:amet";
arr = str.split(":");
arr.shift();
str = arr.join(":");
// str = "Lorem:ipsum:sit:amet"

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