JavaScript文字列「三剣士」

2933 ワード

JavaScript文字列の方法はいろいろあります.その中には3つの方法が文字列の裁断と関係があります.彼らはそれぞれslice()、substring()とsubstr()です.彼らを総称して「三剣士」と呼びます.
彼らは文字列を裁断するために使われていますので、混同しやすいです.具体的な例に合わせて共通点と違いを説明します.
一、共通点
①1つまたは2つのパラメータを受け付けます.そのうち、最初のパラメータは切り取りの開始位置です.②切り取られたサブ文字列を返します.元の文字列は影響を受けません.③2つ目のパラメータを渡さないと、開始位置(1つ目のパラメータ)から文字列の最後まで切り取ります.
var str = '     :    ';
var str1 = str.slice(2);  
console.log(str1);    // "   :    "
str1 = str.substring(2);
console.log(str1);   // "   :    "
str1 = str.substr(2);
console.log(str1);   // "   :    "
console.log(str);   // "     :    "
これらの3つの方法の使い方と役割は同じで、いずれも「公」の文字(索引の値が2)を文字列の最後まで切り取って返します.元の文字列に影響はありません.
二、違います
①slice()とsubstring()の2つ目のパラメータは、いずれも裁断の終了位置を表しています.(これは、配列中のslice()方法と類似しています.substr()の2つ目のパラメータは、文字列の長さを切り取ります.②入力されたパラメータが負の値である場合、slice()は、負のパラメータを文字列の長さに加算します.substring()すべての負のパラメータを0に変換しますが、substr()は比較的複雑です.最初の負のパラメータに文字列の長さを加えて、2番目のパラメータを0に変換します.
1.パラメータは正数です.
var str = '     :    ';
var str1 = str.slice(2,5);
console.log(str1);    // "   "
str1 = str.substring(2,5);
console.log(str1);    // "   "
str1 = str.substr(2,3);
console.log(str1);    // "   "
明らかに、slice()とsubstring()の使い方が一致しています.二つのパラメータはそれぞれ開始位置2と終了位置5を表しています.終了位置5の文字(":)は含まれていません.substr()の2番目のパラメータは切り取りたい文字列の長さを表しています.実際の例では3文字を切ります.
2.パラメータにマイナスがあります.
var str = '     :    ';
console.log(str.length);   // 10
var str1 = str.slice(-4);   //     str.slice(6)
console.log(str1);   //  "    "
str1 = str.substring(-4);   //     str.substring(0)
console.log(str1);   //  "     :    "
str1 = str.substr(-4);   //     str.substr(6)
console.log(str1);   //  "    "

var str2 = str.slice(2,-4);   //     str.slice(2,6)
console.log(str2);   //  "   :"
str2 = str.substring(2,-4);   //     str.substring(2,0),   str.substring(0,2)
console.log(str2);   //  "  "
str2 = str.substr(2,-4);   //     str.substr(2,0)
console.log(str2);   //  ""

var str3 = str.slice(-2,-4);   //     str.slice(8,6)
console.log(str3);    // ""
str3 = str.substring(-2,-4);   //     str.substring(0,0)
console.log(str3);   // ""
str3 = str.substr(-2,-4);   //     str.substr(8,0)
console.log(str3);   // ""

var str4 = str.slice(-4,-2);   //     str.slice(6,8)
console.log(str4);   // "  "
str4 = str.substring(-4,-2);  //     str.substring(0,0)
console.log(str4);  // ""
str4 = str.substr(-4,-2);  //     str.substr(6,0)
console.log(str4);  // ""
パラメーターがマイナスの時、覚えておくだけで、sliceは負に合わせて総長を加えて、substringは負に会ったらゼロになります.substrは総長を加えて1回ゼロになります.また、特に注意する必要があるのは、slice()の最初のパラメータは第二のパラメータよりも小さくなければ、文字列を正常に切り取られません.でないと、戻ってくるのは空の文字列です.substring()はこの問題がありません.
本稿の重点総括:
①substr()二つ目のパラメータは裁断長さで、負であれば裁断結果は必ず空の文字列②いずれ裁断しても元の文字列に影響しない③パラメータが負であれば、sliceを総長とし、substringをゼロにし、substrを加えたら総長を合わせてゼロにする.