JavaScript

String.prototype.lengthプロパティ

 編集:2022.07.31 by T.A.

読み取り専用。String オブジェクトの文字列長を UTF-16 コードユニットの数で表します。

string インスタンスの読み取り専用データ プロパティです。

number= String.length
String String、文字列。

Number。文字数。

解説

このプロパティは、文字列内のコード単位の数を返します。JavaScript で使用される文字列書式である UTF-16 は、ほとんどの一般の文字は単一の16ビット コード ユニットで表しますが、あまり使われない文字に対しては2つのコード ユニットを使用する必要があり、length で返される値が文字列の実際の文字数と一致しなくなる可能性があります。

ECMAScript 2016(ed. 7)では最大長が「2^53 -1」要素と制定されました。それ以前は最大長は定まっていませんでした。Firefox 内にある文字列の最大長は「2**30 -2」(~1GB)です。Firefox 65 以前での最大長は「2**28 -1」(~256MB)でした。

空の文字列の場合、length は 0 になります。

静的プロパティの String.length は文字列の長さとは関係なく、String 関数のアリティ(ゆるく言えば、それが持つ形式的な引数の数)であり、1 です。

Unicode

length は文字数ではなくコード ユニットの数を数えるため、文字数を知りたい場合はこのようなことをする必要があります。

function getCharacterLength (str) {
  // ここで使用される文字列反復子()は、文字を繰り返し処理します。単なるコード単位ではありません。
  return [...str].length;
}

D=console.log(getCharacterLength('A\uD87E\uDC04Z'); //=3

// 推奨されていませんが、次のように、これを各文字列に追加できます:
Object.defineProperty(String.prototype, 'charLength', {
  get () {
    return getCharacterLength(this);
  }
});

D='A\uD87E\uDC04Z'.charLength; //=3
基本的な使い方
let x='Mozilla';
D=x.length; //=7

let empty='';
D=empty.length; //=0
length プロパティへの代入
//コンソールにて
let myString="bluebells";

// 文字列の .length プロパティに値を代入しようとしても、目に見える効果はありません。
myString.length = 4;
D=myString; //="bluebells"。(期待される出力)
D=myString.length; //=9。(期待される出力)

テスト