JavaScript,如何以最有效的方式从字符串中获得第二个值,如“;var1-var2”;

JavaScript, how in most effective way get second value from string like "var1-var2"

本文关键字:第二个 var1-var2 有效 JavaScript 方式 字符串      更新时间:2023-09-26

我知道.split("-",2),但我如何才能制作这样的

var str = "123-341235";
alert( str.split( "-",2 ) . [2] )<--- to get second one (341235) value? 

Tnx寻求帮助全部!

我看到了两个简单的解决方案,它们具有大致相同的性能:

var str = "123-341235";
str.split('-')[1]; // => "341235" (slower)
str.slice(str.indexOf('-')+1); // => "341235" (faster)

这个jsPerf基准测试显示,"slice/indexOf"解决方案在Chrome和Firefox上的速度大约是前者的两倍。

请注意,对于任何一种解决方案,在检索字符串的第二部分之前,都必须检查hypen字符是否真的存在;我敢打赌,添加check仍然会使"slice/indexOf"解决方案更快。

您只需要省略"."(点)并以0:开始数组索引

str.split("-", 2)[1];

我通常使用这个:

str.split("-", 2).pop()

在一行中:

alert('123-341235'.split('-',2 )[1]);

你可以猜到两个:

var str = "123-341235";
alert( str.split('-',2)[1]) );

数组是基于零的,这意味着数组的第一个元素具有索引0,第二个索引1,依此类推。此外,数组和索引值([i])之间的点会产生错误。

这应该有效:

alert( str.split( "-",2 )[0] + '/' + str.split( "-",2 )[1]);
var str = "123-341235";
alert( (str.split("-"))[1] );
  • 记住数组是基于零的,所以第二个数字是索引1

最快的IMHO

var str = "123-341235";
alert(str.substr(str.indexOf("-")+1));

第二个参数告诉split要执行多少次拆分。参见

http://www.w3schools.com/jsref/jsref_split.asp

进行

var tokens = str.split("-");
tokens[0] // 123
tokens[1] // 341235

split返回一个结果数组,记住数组是基于0的,所以[0]是第一个结果,[1]是第二个结果。

如果没有一些正则表达式overkill:,关于SO的JavaScript问题就永远不完整

var tokens = /^'d+-('d+)$/.exec(str);
if (tokens) {
    console.log(tokens[1]);
}

事后看来,这允许进行格式验证。