在javascript中以字符串形式获取破折号之后的所有内容

mrb*_*lah 126 javascript

什么是最干净的方式,这将在IE和Firefox中工作.

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

现在'sometext'和破折号之后的整数可以有不同的长度.

我应该只使用子串和索引,还是其他方式?

art*_*ung 232

我该怎么做:

// function you can use:
function getSecondPart(str) {
    return str.split('-')[1];
}
// use the function:
alert(getSecondPart("sometext-20202"));
Run Code Online (Sandbox Code Playgroud)

  • 是不是值得一提的是,如果字符串是`sometext-20202-303`,这个函数将不起作用? (46认同)
  • @IstiaqueAhmed如果问题不是特定于一个非常具体的格式:"我的字符串看起来像这样:sometext-20202" (15认同)
  • 这个问题的确是“在javascript字符串中的破折号后得到了所有内容”,在这种情况下会失败。 (4认同)

Rya*_*tle 70

我更喜欢的解决方案是:

var str = 'sometext-20202';
var slug = str.split('-').pop();
Run Code Online (Sandbox Code Playgroud)

slug你的结果会在哪里?

  • 这个解决方案可以为您提供*最后*破折号之后的所有内容。就我个人而言,我将“破折号之后的所有内容”解释为“第一个”破折号之后的所有内容,但这似乎可以解释。 (5认同)
  • 如果您使用多个分隔符,此解决方案是最好的。 (4认同)
  • 谢谢。弹出是最有效的方法 (2认同)

Sea*_*ght 22

var the_string = "sometext-20202";
var parts = the_string.split('-', 2);

// After calling split(), 'parts' is an array with two elements:
// parts[0] is 'sometext'
// parts[1] is '20202'

var the_text = parts[0];
var the_num  = parts[1];
Run Code Online (Sandbox Code Playgroud)


Kan*_*nke 17

var testStr = "sometext-20202"
var splitStr = testStr.substring(testStr.indexOf('-') + 1);
Run Code Online (Sandbox Code Playgroud)

  • 与两个得票较高的答案不同,这个答案实际上正确地解决了所述问题“破折号后的所有内容”,即使“所有内容”中有更多破折号。 (5认同)

Cer*_*rus 6

据我所知,无论是substring()indexOf()由Mozilla和IE浏览器的支持.但请注意,某些浏览器的早期版本(尤其是Netscape/Opera)可能不支持substr().

你的帖子表明你已经知道如何使用substring()indexOf(),所以我没有发布代码示例.

  • string.substring(string.indexOf(' - ')+ 1) (18认同)
  • @trevorgrayson这是最好的答案. (2认同)

kcs*_*oft 6

myString.split('-').splice(1).join('-')
Run Code Online (Sandbox Code Playgroud)


Mah*_*ian 6

使用内置的javascriptreplace()函数和正则表达式(/(.*)-/),您可以将破折​​号字符之前的子字符串替换为空字符串(“”):

"sometext-20202".replace(/(.*)-/,""); // result --> "20202"
Run Code Online (Sandbox Code Playgroud)