gorogoronyan FC2

JavaScript: 文字列の処理: 文字と文字コード

概略

文字列は文字の集まり (2023/10)

文字列 (string) は 1文字ずつの 文字 (char, character, キャラクター) の集まりと見なすことができます。

let s1 = "あいう";             // 文字列を変数 s1 に代入します。
let s2 = "あ" + "い" + "う";   // + は文字の連結を表します。連結した文字を s2 に代入します。

// s1 も s2 も内容は同じです。
// 比較すると if (s1 == s2){ ... }  は true になります。

文字列を文字の配列と見なして個々の文字を読み取ることができます。 変数名[インデックスの数字] で読むことができます。

例:
let s = "ABC"; のとき

s[0] は A。1番目の文字。最初のインデックスは 1 ではなくて 0 になります。
s[1] は B。2番目の文字。
s[2] は C。3番目の文字。

最初のインデックスの数字が 1 ではなくて 0 になる点に注意してください。 配列のデータを扱うときには 0 の方が便利なので遠い昔からそうなっています。

文字列中の文字を置き換えることはできません

文字列のデータは読み出し専用です。 文字を読むことができますが、 後から文字をセットして置き換えることはできません。

let s = "abc"; 
s[1] = "B";     //(誤り) 置き換えはできない。s は "aBc" にはなりません。

文字を置き換える場合は 文字列の置換処理で新しい文字列を作り直すことが必要です。 元の文字列の内容を変更することはできません。 専門的には 不変 (イミュータブル, immutable : 変更できない) といった用語を使います。string は不変の原始型のデータです。

JavaScript では文字型 (Char 型) がありません

s[0] などで取り出した文字も長さが 1 の文字列 (string) になります。 C言語、Java, C# などの言語には文字列 (string) とは別に文字型 (char) があります。

文字コード (2023/10)

文字では 「あ」「A」「a」「1」など個々の文字に対して 1つずつ対応する数値が割り当てられています (文字コード)。

例えばアルファベット「A」の文字コードは 49 (16進数で 0x31)、 ひらがな「あ」の文字コードは 12354 (0x3042) です。 コンピュータは文字を直接理解できないので 文字列も数値データの集まりと見なして処理します。

String.charCodeAt() 関数

文字コードの値は String.charCodeAt() で調べることができます。

文字列の大小比較

文字や文字列も文字コードの値を見て大小を比較することができます。 複数の文字列をあいうえお順や ABC 順に並べ替える (ソート: sort) ときに多用します。

関連

エスケープ文字 \ (2023/10)

文字列内の文字で \ は特別な扱いの文字になります (エスケープ文字)。 \ の次に現れる文字と組み合わせて特殊な意味を持たせます。

例えば文字列の改行を意味する文字コードは表示する文字を持たないので、 そのままではアルファベットやひらがなのような 文字データとして入力できません。 このようなときにエスケープ文字 \ と組み合わせて改行コードを表現します。

◎ JavaScript の文字列で使用するエスケープ文字の例

  \n    改行を表す。
  \t    タブを表す。
  \\    文字 \ を表す。

その他

Java の人向けの話

JavaScript の文字列では 1) 原始型の文字列と 2) Object のサブクラスの String があります。 JavaScript では原始型の文字列しか使いません。 new String() で String オブジェクトを作る場面は多分ないと思います。 new String() で作るとトラブルの原因になるので注意。

1) 原始型の文字列
  let s = "文字列";

2) String オブジェクトの文字列
  let s = new String("文字列");  //こちらは使いません。

関連

inserted by FC2 system