ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript 文字列操作メソッドのスライス、サブストラ、サブストリングとその IE 互換性_JavaScript スキルの詳細な分析

JavaScript 文字列操作メソッドのスライス、サブストラ、サブストリングとその IE 互換性_JavaScript スキルの詳細な分析

WBOY
リリース: 2016-05-16 15:25:23
オリジナル
1472 人が閲覧しました

substr()、substring()、slice()メソッドは文字列をインターセプトするときによく使われますが、使い方が混同されている場合があるのでまとめておきます。

読書ディレクトリ
•スライス()
•substring()
•substr()
•概要

スライス()

定義: 1 つまたは 2 つのパラメーターを受け入れ、最初のパラメーターは部分文字列の開始位置を指定します。 2 番目のパラメーターは部分文字列の終了位置を表します (終了位置の文字を除く)。2 番目のパラメーターが渡されない場合、文字列の長さが終了位置として使用されます。

1. 渡されたパラメータが正の値の場合:

var str ="helloWorld";
// 一个参数,则将字符串长度作为结束位置
alert(str.slice(3)); // "loWorld"
// 两个参数,7位置上的字符为"r",但不包括结束位置的字符
alert(str.slice(3,7)); // "loWo" 
ログイン後にコピー

2. 渡されたパラメータが負の値の場合:

slice()方法会将传入的负值与字符串长度相加。
 var str ="helloWorld";
// 一个参数,与字符串长度相加即为slice(7)
alert(str.slice(-3)); // "rld"
// 两个参数,与字符串长度相加即为slice(3,6)
alert(str.slice(3,-4)); // "loW" 
ログイン後にコピー

3. 2 番目のパラメータが最初のパラメータより小さい場合:

slice() メソッドによって渡された 2 番目のパラメーターが最初のパラメーターより小さい場合、空の文字列が返されます。

var str ="helloWorld";
alert(str.slice(5,3)); // "" 
ログイン後にコピー

4. IE の互換性

IE8 ブラウザでテストした場合、問題はなく、動作は最新のブラウザと一致しています。

部分文字列()

定義: 1 つまたは 2 つのパラメーターを受け入れ、最初のパラメーターは部分文字列の開始位置を指定します。 2 番目のパラメーターは部分文字列の終了位置を表します (終了位置の文字を除く)。2 番目のパラメーターが渡されない場合、文字列の長さが終了位置として使用されます。

1.渡されたパラメータが正の値の場合:slice()メソッドと同じ動作

var str ="helloWorld";
// 一个参数,则将字符串长度作为结束位置
alert(str.substring(3)); // "loWorld"
// 两个参数,7位置上的字符为"r",但不包括结束位置的字符
alert(str.substring(3,7)); // "loWo" 
ログイン後にコピー

2. 渡されたパラメータが負の値の場合:

substring() メソッドは、すべての負のパラメーターを 0 に変換します。例を見てみましょう:

var str ="helloWorld";
// 两个参数,-4会转换为0,相当于substring(3,0) -->即为 substring(0,3)
alert(str.substring(3,-4)); // "hel" 

ログイン後にコピー

substring() メソッドは、小さい方の数値を開始位置として使用し、大きい方の数値を終了位置として使用します。上の例と同様、substring(3,0) と substring(0,3) は同じ効果があります。

4. IE の互換性

IE8 ブラウザでテストした場合、問題はなく、動作は最新のブラウザと一致しています。

substr()

定義: 1 つまたは 2 つのパラメーターを受け入れ、最初のパラメーターは部分文字列の開始位置を指定します。 2 番目のパラメーターは前のメソッドとは多少異なり、返される文字数を示します。 2 番目の引数が渡されない場合は、文字列の長さが終了位置として使用されます。例を見てみましょう:

1. 渡されたパラメータが正の値の場合:

var str ="helloWorld";
// 一个参数,则将字符串长度作为结束位置
alert(str.substr(3)); // "loWorld"
// 两个参数,从位置3开始截取后面7个字符
alert(str.substr(3,7)); // "loWorld" 
ログイン後にコピー

2. 渡されたパラメータが負の値の場合:

substr() メソッドは、負の最初のパラメーターを文字列の長さに追加し、負の 2 番目のパラメーターを 0 に変換します。

var str ="helloWorld";
// 将第一个负的参数加上字符串的长度--->
//即为:substr(7,5) ,从位置7开始向后截取5个字符
alert(str.substr(-3,5)); // "rld"
// 将第二个参数转换为0
// 即为:substr(3,0),即从位置3截取0个字符串,则返回空
alert(str.substr(3,-2)); // "" 
ログイン後にコピー

3. IE の互換性

substr() メソッドは負の値を渡すと問題が発生し、元の文字列が返されます。 IE9 ではこの問題が修正されています。

概要

正のパラメータを渡す場合、slice() と substring () の動作は一貫しており、substr() メソッドは 2 番目のパラメータで混乱しやすくなります

負のパラメータを渡す場合、slice() メソッドは文字列の長さを加算します。これは一般的な考えに沿っていますが、substring() の 2 番目のパラメータを 0 に変換すると問題が発生しやすく、開始位置が変更されます。 substr() メソッドに負の値を指定すると、IE との互換性の問題が発生します。

要約すると、一般的には、slice() メソッドを使用することをお勧めします。

スライス、部分文字列、部分文字列の違いを紹介しましょう

まず、どちらも 2 つのパラメータを受け取ります。slice と substring は開始位置と終了位置 (終了位置を除く) を受け取り、substr は開始位置と返される文字列の長さを受け取ります。以下の例を見てください:

 var test = 'hello world';
  alert(test.slice(,));    //o w
  alert(test.substring(,));   //o w
  alert(test.substr(,));   //o world 
ログイン後にコピー

ここで注意すべき点は、substring は 2 つのパラメーターのうち小さい方を開始位置として使用し、大きい方のパラメーターを終了位置として使用することです。

例:

alert(test.substring(7,4));   //o w 
ログイン後にコピー

次に、受け取ったパラメータが負の数値の場合、slice はその文字列の長さを対応する負の数値に加算し、その結果がパラメータとして使用されます。substr は最初のパラメータを加算した結果のみになります。最初のパラメータとして文字列の長さを指定し、すべての負のパラメータを直接 0 に変換します。テストコードは次のとおりです:

var test = 'hello world';  
alert(test.slice(-));   //rld  
alert(test.substring(-));  //hello world  
alert(test.substr(-));  //rld  
alert(test.slice(,-));  //lo w  
alert(test.substring(,-)); //hel  
alert(test.substr(,-));  //空字符串 
ログイン後にコピー

注: IE では、substr で受け取った負の値の処理にエラーがあり、元の文字列が返されます。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート