ECMAScript 6の新特性——「文字列の拡張」

4009 ワード

1文字列のユニック表記法
ES 6は、大きな括弧に符号点を入れさえすれば、その文字を正確に解読することができます.
var x = "\u20bb7";
document.write(x); //₻7
var x = "\u{20bb7}";
document.write(x); //?      
2 codePointAt()
JavaScriptは4バイト分のセーブが必要な文字(Unicodeコードポイントが0 xFFFFより大きい文字)に対して、JavaScriptは2文字だと思います.
var s = "?";

s.length // 2
s.charAt(0) // ''
s.charAt(1) // ''
s.charCodeAt(0) // 55362
s.charCodeAt(1) // 57271
ES 6は、4バイトの格納された文字を正確に処理し、1文字の符号点を返すcodePointAt方法を提供する.
var x = "\u{20bb7}";
console.log(x); // 
console.log(x.length);
console.log(x.codePointAt(0)); //134071
console.log(x.codePointAt(0).toString(16)); //20bb7
console.log(x.codePointAt(1)); //57271
codePointAt(0)は10進数符号点を返します.codePointAt(1)は返した結果はcharCodeAt方法と同じです.
3 Stering.from CodePoint()
ES 5は、String.from CharCode方法を提供し、コードポイントから対応文字を返すが、この方法では32ビットのUTF-16文字を識別できない.
ES 6は、String.from CodePoint方法を提供し、0 xFFFFの文字を認識し、String.from CharCodeの方法の不足を補っています.役割は、ちょうどcodePointAt法と反対です.
console.log(String.fromCharCode("0x20bb7")); //ஷ
console.log(String.fromCodePoint("0x20bb7")); // 
4文字列のエルゴードインターフェース
ES 6は文字列のためにエルゴードインターフェースを追加し、文字列がfor...of巡回巡回することができます.
このエルゴードの最大の利点は、0 xFFFFより大きいコードポイントを識別できることである.
var text = String.fromCodePoint("0x20bb7"); // 
for (let i = 0; i < text.length; i++) {
    console.log(text[i]);
    //�
    //�
}
for (let codePoint of text) {
    console.log(codePoint); //?
}
5 at()
ES 7は文字列の一例として、Unicode番号が0 xFFFFより大きい文字を識別するためのat方法を提供する.
6 normalize()
ES 6は文字列の例のnormalize()方法を提供し、文字の異なる表現方法を同じ形式に統一することをユニック正規化と呼ぶ.
'\u01D1'.normalize() === '\u004F\u030C'.normalize()
// true
ただし、normalizeメソッドでは現在、3つ以上の文字の合成は認識できません.
7 includes()、starts With()、ends With()
従来、JavaScriptはindexOf方法だけであり、他の文字列に文字列が含まれているかどうかを判定するために使用されてもよい.ES 6はまた3つの新しい方法を提供します.
  • includes():ブール値を返します.パラメータ文字列が見つかったかどうかを表します.
  • starts With():ブール値を返し、パラメータ文字列がソース文字列の先頭にあるかどうかを示します.
  • endsWith():ブール値を返し、パラメータ文字列がソース文字列の末尾にあるかどうかを示します.
  • var str = "string";
    console.log(str.includes("r")); //True
    console.log(str.startsWith("str")); //True
    console.log(str.endsWith("g")); //True
    
    また、彼らは2番目のパラメータをサポートして検索を開始する位置を表しますが、endsWithは前のn文字です.
    8 repeat()
    repeatメソッドは新しい文字列を返し、元の文字列をn回繰り返すことを表します.
    var str = "string";
    console.log(str.repeat(2)); //stringstring
    
    9 padStart()、padEnd()
    padStartは頭の補完に使います.padEndは後尾の補完に使います.
    二つのパラメータ:1つは最小文字列の長さです.もう一つは補完文字列です.
    10テンプレート文字列
    テンプレート文字列(template string)は拡張版の文字列で、逆引用符(`)で表示されます.普通の文字列として使用できます.また、複数行の文字列を定義したり、文字列に変数を埋め込んだりできます.
    var name = "Oliver"; //  
    var info = `hello world
     welcome you`; //     
    console.log(`hello ${name}`,info); //    ,       
    
    変数は${}の大かっこに書くべきで、任意のJS表現を入れることができます.
    11ラベルテンプレート
    以下の例は実際に関数パラメータの呼び出しです.
    tag(["Hello ", "; Infomation: ", ""],Oliver,welcome to use the system.);
    
    (関数の書き方は以下の通りです.
    let user = {
        name: "Oliver",
        info: "welcome to use the system."
    };
    tag`Hello ${user.name}; Infomation: ${user.info}`;
    function tag(s, v1, v2) {
        console.log(s); //["Hello ", "; Infomation: ", ""]
        console.log(v1); //Oliver
        console.log(v2); //welcome to use the system.
    }
    
    12 String.raw()
    String.raw方法は、テンプレート文字列の処理関数として使用されることが多いが、1つのスラッシュを返しても、変換後のテンプレート文字列に対応する変換された文字列である.
    String.raw`Hi
    ${2+3}!`; // "Hi\
    5!" String.raw`Hi\u000A!`; // 'Hi\\u000A!'
    String.raw法は通常の関数としても使用できる.このとき、最初のパラメータは、raw属性を持つオブジェクトであり、raw属性の値は配列であるべきです.
    String.raw({ raw: 'test' }, 0, 1, 2);
    // 't0e1s2t'
    
    //    
    String.raw({ raw: ['t','e','s','t'] }, 0, 1, 2);