第四章文字列の拡張

3475 ワード

ES 6はUnicodeへのサポートを強化し、文字列オブジェクトを拡張します.
4..1文字列Unicode表現法
lavaScriptは\uxxxx形式で1つの文字を表すことができます.ここでxxxxは文字のユニックポイントを表します.この表現は、コードポイントが\u 0000-\uFFFFの間の文字に限定されます.この範囲を超えた文字は、2バイトの形で表現しなければなりません.
4.2 codePOintAt()
javaScriptの内部には、UTF-16という形で文字が格納されていますが、各文字は2バイト固定されていて、4バイトの記憶文字が必要です.ES 6は、codePOintAt()方法を提供する.4バイトの記憶された文字を正しく処理し、1文字の符号点を返すことができます.これは、chart方法では、バイト全体を読み取ることができないため、charCodeAt()方法は、前の2バイトと後の2バイトの値をそれぞれ返すしかない.したがって、codePointAt()を使用します.
var  s=' a';
s.codePointAt(0)//134071
s.codePointAt(1)//57271
s.codePointAt(2)//97
codePointAt()メソッドは、符号点が10進数の値を返します.16進数が必要なら、tostring方式で変換します.
var s=' a';
s.codePointAt(0).toString(16)//20bbb7
s.codePointAt(2).toString(16)//61
4.3 Stering.froomcodePoint()
string.from CharCodeはES 5によって提供されますが、32ビットのUTF-16の文字ではありません.ES 6は、String.from codePoint()を提供し、0 xFFFF以上の文字を識別することができ、機能的には、codePointとは逆である.from CodePoint方法はstringオブジェクトに定義され、codePointAt方法は文字列のインスタンスオブジェクトに定義される.
4.4文字列のエルゴードインターフェース
ES 6は文字列にエルゴードインターフェースを追加し、はいの文字列はfor...ofサーキュラードを使用することができます.その最大の利点は、0 xFFFF以上のコードポイントを識別することができ、従来のforサイクルではこのようなコードポイントを認識できないことである.
4.5 at()
ES 5は文字列オブジェクトに対して、0 xFFFF以上の文字を識別することができない文字列所定の位置の文字を返します.でも、atはいいです
4.6 normalize()
ES 6は文字列にnormalize()の方法を提供し、文字の異なる表現方法を同じ形式に統一することをユニック正規化といいます.NFC、NFC、NFC、NFKDの4つのパラメータがあります.
4.7 includes()/starts With()/ends With()
従来の方法では、1つの文字列が別の文字列に含まれているかどうかを判定するために、indexOf方法だけが使用されてもよく、ES 6は、3つの新しい方法1.includes()がブール値に戻り、パラメータ文字列が見つかったかどうかを示す.2.starts With()ブール値を返します.パラメータ文字列がソース文字列のヘッダがあるかどうかを示します.3.endsWith()ブール値を返します.パラメータがソース文字列の末尾にあるかどうかを表します.これらの3つの方法はいずれも第2のパラメータをサポートしており,これは元素探索を開始する位置を表している.二番目のパラメータを使う場合、endsWith()の挙動は前のn文字に対してで、後ろに探すのではなく、前に探します.
4.8 repeat()
repeatメソッドは新しい文字列を返し、元の文字列をn回繰り返すことを表します.パラメータが小数であれば、下に丸められます.パラメータがマイナスまたはinfinityなら、エラーが発生します.パラメータが0から1までの間なら、0.repeatは0と同じです.
'x'.repetat(2)//'xx'
repeatのパラメータが文字列であれば、先に数字に変換されます.
4.9 padStart().padEnd()
ES 2017は文字列補完の機能を導入しています.文字列が指定されていない場合、頭または尾に補完されます.頭部補完とテール補完
'x'.padStart(5,'ab')//'ababx';    
'x'.padEnd(4,'ab')//'abax';    
        ,                 ,            。
                      ,       。
'xxx'.padStart(2,'ab')//'xxx'
                              ,              。
         ,       。

4.10テンプレート文字列
従来の出力テンプレート
$("#a").append(
'There are '+value+''
)
ES 6はテンプレート文字列を導入して問題を解決します.
$("#a").append(`
There are ${value}`
)
      。
               ,             ,             。
             ,                ,     。

$("#a").html(`
  • one
`.trim()) , , trim() 。 , ${} 。 。 , 。 , 。 。
4.12ラベルテンプレート
テンプレート文字列の機能はこれらの機能だけではなく、「ラベルテンプレート」と呼ばれる機能を処理するために呼び出された関数の後に続くこともできます.ラベルのテンプレートはテンプレートではなく、関数が呼び出される特殊な形式です.「ラベル」は関数を指し、後に続くテンプレートの文字列は彼のパラメータです.ただし、テンプレート文字列に変数がある場合は、単に呼び出すのではなく、テンプレート文字列を複数のパラメータに処理して関数を呼び出します.
4.13 String.raw()
ES 6はオリジナルのストリングスオブジェクトにraw()の方法を提供します.String.rawメソッドはテンプレート文字からの処理関数として使用され、逆斜線のいずれかを意味する文字列を返します.置換変数のテンプレート文字列に対応しています.
String .raw`Hi
${2+3}!` //"Hi\\5!"
元の文字列のバックスラッシュが転じた場合、Stering.rawは何も処理されません.