76

最もひどいこと!次のコードは、予想される「wo」の代わりに「llo」を出力します。他のいくつかの数値についても驚くべき結果が得られました。ここで何が欠けていますか?

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

6 に答える 6

103

あなたは混乱してsubstring()おり、substr():substring()はオフセットと長さではなく、2 つのインデックスを期待しています。あなたの場合、インデックスは 5 と 2 です。つまり、より高いインデックスが除外されるため、文字 2..4 が返されます。

于 2010-01-01T16:54:27.293 に答える
17

substring 構文を確認してください:

部分文字列 (から、へ)

から 必須。抽出を開始するインデックス。最初の文字はインデックス 0 です

オプションに。抽出を停止するインデックス 。省略した場合、残りの文字列を抽出します

少し奇妙だと思います。それは自分でも知りませんでした。

あなたがしたいことは

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

上記のコードは、最初の値が始点から終点までであるため、間違っています。たとえば、char 5 から移動し、ochar 2 に移動すると、次のlようになりlloます。

あなたが欲しいのは

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

以下の構文を参照してください。

str.substring(indexA, [indexB])

の場合indexA > indexBsubstring()関数は引数が逆であるかのように動作します。

ここでドキュメントを検討してください: 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 に答える