JavaScriptのStringとは?
JavaScriptのStringオブジェクト
JavaScriptにはStringオブジェクトというものがあります。
JavaScriptのStringオブジェクトは文字列を扱う為のオブジェクトとなっています。String(文字列)型はJavaScriptの基本データ型であり、オブジェクトではありませんが、これをオブジェクトとして扱えるようにする為のものが、ビルトインとして組み込まれているStringオブジェクトと呼ばれるものです。
基本データ型をオブジェクトとして扱えるようにするオブジェクトをラッパーオブジェクトと呼びます。
ここではString(文字列)について説明していきます。
文字列を作成する
文字列を作成する方法を紹介いたします。
文字列を作成する方法は2つあり、文字列を直接代入する方法とStringオブジェクトを利用する方法があります。
文字列を直接代入して使用する方法
let str= '文字列';
Stringオブジェクトを利用して使用する方法
let str =new String('文字列');
JavaScriptで文字列を使用するには文字列を'(シングルクォート)または、"(ダブルクォート)で囲む必要があります。
作成する文字列によってはエスケープシーケンスを使用しなければならない場合があります。
この2つの違いは直接代入して作成した場合の文字列はString型で、Stringオブジェクトを使用し作成した文字列はObject型になるという点です。
String型とObject型の違い
JavaScriptで使用するデータ型は大きく分けて2つあり、プリミティブ型とオブジェクト型があり、String型はプリミティブ型です。
オブジェクトとは、プロパティとメソッドの集まりですが、プリミティブ型はプロパティとメソッドを持たないデータになります。この違いがあるとStringオブジェクトのメソッドをString型(文字列)のデータには利用できないと思われるかもしれません。
ですが、String型(文字列)のデータをStringオブジェクトのプロパティやメソッドを使用するとき、自動的にStringオブジェクトとして扱われます。そのため、String型(文字列)でメソッドを使用するためにStringオブジェクトに変更しなくてもよくなります。
文字列を比較する方法
文字列を比較するには「===」を使用します。
let result = '文字列' === '文字列';
左右の文字が同じだとtrueを返し、違うとfalseを返します。これを使用することで条件分岐などに活用できます。ですが===でString型とStringオブジェクトを使用し作成した文字列を比較したときは注意が必要です。
次のサンプルコードを見てください。
'use strict';
let str1 = new String('名古屋');
let str2 = '名古屋';
let result1 = str1 === str2;
let result2 = str1 == str2;
console.log('result1= ' + result1);
console.log('result2= '+ result2);
実行結果
result1= false
result2= true
上記サンプルコードの実行結果に違いが出ています。
これは==(等価演算子)と===(厳密等価演算子)の違いが関係しており、==は値しか判断しないのに対し、===は値と型両方を判断するためです。ですので===を使用する際は注意は必要です。
Stingの参照方法
JavaScriptのStringデータ(文字列)は配列のように扱うことができ[インデックス番号]を指定することで任意の一文字を抽出することが出来ます。
サンプルコード
'use strict';
let str = '名古屋';
console.log(str);
console.log(str[0]);
実行結果
名古屋
名
インデックス番号は配列と同様に0から始まります。
また、配列と同じようにStringデータは使用できるため.lengthを使用し文字数の取得も可能です。
文字列を連結する方法
文字列を連結する方法について説明します。
基本構文
let str = '文字' + '文字';
+で繋げることで1つの文字列にすることが出来ます。
サンプルコード
'use strict'
let sample = '山田'+ '太郎';
console.log(sample);
実行結果
山田太郎
Stringのプロパティとメソッド
JavaScriptのStringオブジェクトには様々なメソッドが用意されています。
Stringオブジェクトのプロパティと一部メソッドを紹介します。
Stringオブジェクトのプロパティ
文字列.length
文字列の長さを取得します。
Stringオブジェクトのメソッド
文字列.charAt(n)
文字列の中からn+1(nに1を加えた)番目の文字を返します。
文字列.concat(str)
文字列の末尾に文字列(str)を連結し返します。
文字列.indexOf(指定した文字)
指定した文字が0番目から数えて何番目にあるのかを返します。
文字列.match(正規表現)
正規表現で指定したパターンを文字列から検索し返します。
文字列.replace(対象の文字, 置換する文字);
対象の文字を置換する文字に変更し返します。
文字列.substr(開始位置, 文字数);
開始位置から指定した文字数を分割し返します。
文字列.substring(開始位置, 終了位置);
開始位置から指定した終了位置を分割し返します。-値は無条件に0と変更され、また開始位置が終了位置よりも大きいと自動的に反転されます。
文字列.subslice(開始位置, 終了位置);
開始位置から指定した終了位置を分割し返します。-値を指定すると文字列の後ろから数えた場所になります。また開始位置が終了位置よりも大きいと空文字が返ります。
Stringオブジェクトのメソッドを一部紹介しましたが、この他にも様々なものがあります。
まとめ
JavaScriptのStringについて説明しました。
Stringは文字列型のデータを扱う為の重要なものとなっています。