76

最糟糕的事情!以下代码打印出“llo”而不是预期的“wo”。对于其他一些数字,我得到了如此令人惊讶的结果。我在这里想念什么?

alert('helloworld'.substring(5, 2));
4

6 回答 6

103

你很困惑substring()并且substr():substring()需要两个索引而不是偏移量和长度。在您的情况下,索引是 5 和 2,即字符 2..4 将被返回,因为较高的索引被排除在外。

于 2010-01-01T16:54:27.293 回答
57

您在 Javascript 中有三个选项:

//slice
//syntax: string.slice(start [, stop])
"Good news, everyone!".slice(5,9); // extracts 'news'

//substring 
//syntax: string.substring(start [, stop])
"Good news, everyone!".substring(5,9); // extracts 'news'

//substr
//syntax: string.substr(start [, length])
"Good news, everyone!".substr(5,4); // extracts 'news'
于 2013-04-11T08:35:04.433 回答
17

检查substring 语法

子字符串(从,到)

必需。开始提取的索引。第一个字符在索引 0 处

可选。停止提取的索引 。如果省略,则提取字符串的其余部分

我承认这有点奇怪。我自己不知道。

你想做的是

alert('helloworld'.substring(5, 7));
于 2010-01-01T16:51:03.870 回答
2
alert('helloworld'.substring(5, 2));

上面的代码是错误的,因为第一个值是起点到终点。例如,从 char 5 移动o到 char 2,l这样会得到llo所以你已经告诉它倒退。

你想要的是

alert('helloworld'.substring(5, 7));
于 2010-01-01T16:52:04.023 回答
2

请参阅下面的语法:

str.substring(indexA, [indexB])

如果indexA > indexB,该substring()函数的行为就像参数被颠倒了一样。

在此处考虑文档: https ://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/substring

于 2013-03-16T07:10:33.863 回答
0

这就是我所做的......

var stringValue = 'Welcome to India';

// if you want take get 'India' 
// stringValue.substring(startIndex, EndIndex)
   stringValue.substring(11, 16); // O/p 'India'
于 2015-12-16T07:00:19.673 回答