JavaScript子字符串帮助

3
我有一个字符串"2500 - SomeValue",如何删除'SomeValue'中的'S'之前的所有内容?
var x = "2500 - SomeValue";
var y = x.substring(x.lastIndexOf(" - "),
// this is where I'm stuck, I need the rest of the string starting from here. 

感谢任何帮助。
~ck
7个回答

9

在最后一个索引位置上加上 3(" - " 的长度),并省略第二个参数。当你向 substring 方法传递一个参数时,它会默认截取到字符串的末尾。

var y = x.substring(x.lastIndexOf(" - ") + 3);

3

那只是:

var y = x.substring(x.lastIndexOf(" - ") + 3);

当您省略第二个参数时,它只会给您从字符串结尾开始的所有内容。
编辑:由于您想要从“ - ”之后获取所有内容,因此我已将起始点加3以跳过这些字符。

1
在问题中,他要求从“S”开始的所有内容,剪掉“ - ”部分。当然,代码与您拥有的相符。 - Matthew Crumley

0
var y = x.substring(0, x.lastIndexOf(' - ') + 3)

0
x.substring(x.lastIndexOf(" - "),x.length-1); //corrected

这实际上会导致运行时错误,因为 x.length 超出了字符串的末尾。我认为你想表达的是 x.length - 1 - Joel

0
尝试
var y = x.split(" ",2);

然后你将会得到一个子字符串数组。第三个元素y[2]就是你需要的。


1
当您使用'split(' ', 2)'时,您将得到最多2个元素的数组,如果有2个或更多空格,则其余部分将被丢弃...因此,这对于上面的示例不起作用。您试图像在Python中一样明智地使用'String.split(..., maximum)';不幸的是,JavaScript并不明智。 - bobince
使用已经失效的 split-maximum 特性的另一种选择是:例如“x.split(' - ').slice(1).join(' - ')”,以放回任何额外的 " - " 字符串。 - bobince

0

var y = x.slice(x.lastIndexOf(" - "), x.length - 1);

这将返回一个字符串值,无论该值是什么或有多长,并且与数组无关。


切片操作不允许使用-1表示最后一个元素吗? - Jimmy
切片需要一个终止值。如果字符串长度可变,则可以使用该长度进行静态测量。-1的值不起作用,因为作为索引,值-1返回未定义。在这种情况下,可能会引发错误。 - austin cheney

0
var y = x.slice(x.lastIndexOf("-")+2);

通常情况下,我们没有足够的空间,所以我们会写成+1,但在你的情况下,+2也可以正常工作。

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