在IE和Firefox中都能工作的最干净的方法是什么?

我的字符串看起来像这个sometext-20202

现在sometext和破折号后面的整数可以有不同的长度。

我应该使用子字符串和索引还是有其他方法?


当前回答

我更喜欢的解决方案是:

const str = 'sometext-20202';
const slug = str.split('-').pop();

你的结果是什么

其他回答

你可以使用分裂方法。如果你需要从特定的模式中获取字符串,你可以使用split with req。经验值:

Var string = "sometext-20202"; console.log (string.split (/-(.*)/)[ 1))

高效,紧凑,适用于一般情况:

s='sometext-20202'
s.slice(s.lastIndexOf('-')+1)

AFAIK, Mozilla和IE都支持substring()和indexOf()。但是,请注意,某些浏览器的早期版本(特别是Netscape/Opera)可能不支持substr()。

你的文章表明你已经知道如何使用substring()和indexOf(),所以我不发布一个代码示例。

对于那些试图在第一次事件发生后就得到所有东西的人:

比如"尼克·K·凯奇"变成"K·凯奇"

你可以使用切片来获取某个角色的所有内容。在本例中,从第一个空格开始:

const delim = " "
const name = "Nic K Cage"

const result = name.split(delim).slice(1).join(delim) // prints: "K Cage"

或者如果OP的字符串有两个连字符:

const text = "sometext-20202-03"
// Option 1
const opt1 = text.slice(text.indexOf('-')).slice(1) // prints: 20202-03
// Option 2
const opt2 = text.split('-').slice(1).join("-")     // prints: 20202-03

使用内置的javascript replace()函数和使用regex(/(.*)-/),你可以用空字符串("")替换破折号之前的子字符串:

"sometext-20202".replace(/(.*)-/,""); // result --> "20202"