String
String オブジェクトは文字列を扱うためのオブジェクトです。JavaScript では、文字列は String オブジェクトとして扱います。
var str = "Hello!";
JavaScript では、ダブルクォート"
やシングルクォート'
に囲まれたものを文字列として識別されます。
ここでは主に String クラスについて解説します。
ページ内 Index
String クラス
String クラスは、文字列を扱うオブジェクトを生成するための定義です。String オブジェクトの元になるものです。
String クラスは以下のようなコンストラクターを持ちますが利用する機会はほぼないです。
var object_String = new String("Hello!");
ダブルクォート"
やシングルクォート'
に囲まれたものが文字列として識別されます。文字列を宣言したところで JavaScript では String オブジェクトが自動で生成されます。
var a = "Hello!";
上記の例では、Hello!
という文字列の宣言によって String オブジェクトa
が自動で生成されます。そして、"Hello!"という文字列リテラルが変数 a に代入されます。
文字列を表すクォート内で同じクォートを扱う場合はエスケープシーケンス\
を使用します。
例えばダブルクォート"
内でダブルクォートを使用するにはエスケープシーケンス\
を以下のように使用します。
"例えばダブルクォート\"内でダブルクォートを使用するにはエスケープシーケンス\を使用します。"
レガシー言語との違い
C言語といったプログラム言語では文字列で宣言された変数は文字列しか扱うことができません。
char a[] = "Hello!";
JavaScript では基本的にすべてのデータをオブジェクトとして生成します。文字列を宣言したところで String オブジェクトとして生成されます。
最初に String オブジェクトとして生成された変数に数値を代入すると Number オブジェクトに変換されます。
var a = 'Hello!';
a = 10;
alert( a );
上記の例は a は 10 として表示されます。JavaScript においてオブジェクトは文字列や数値などに自由に変換できるという特徴があります。
JavaScript では数値や文字列はすべてオブジェクトとして生成されるのですが、実際にはオブジェクト型データまたはプリミティブ型のデータとしてと2通りの扱いがあります。
プログラムコードを編集する上ではあまり気にすることがないのですが、エラーを修正する際にたまにオブジェクト型なのかプリミティブ型なのかという問題が出ます。
プロパティ(Property)
String クラスには以下のプロパティがあります。
| プロパティ | 概要 |
|---|---|
| .length | 文字数 |
メソッド(Method)
数値を文字列に変換するには、.toString()メソッドを使用します。
その他にも、以下のように数値を文字列に変換するメソッドがあります。
| プロパティ | 概要 |
|---|---|
| .charAt() | 引数で指定された位置の文字を返す |
| .charCodeAt() | 引数で指定された位置の UTF-16 のキャラクターコードを返す |
| .codePointAt(pos) | 指定位置 pos にある文字の UTF-16 におけるコードポイント値を返す |
| .concat( ...args ) | 文字列を連結 |
| .includes( searchString [ , position ] ) | 文字列中に文字列 searchString が含まれているか/否か。Boolean型で返す |
| .endsWith( searchString [ , endPosition ] ) | 文字列の末尾に文字列 searchString が含まれているか/否か。endPosition で位置指定ができる。Boolean型で返す |
| .indexOf( searchString [ , position ] ) | 文字列 searchString の位置を返す。ない時は -1。前または position の位置から検索する |
| .lastIndexOf( searchString [ , position ] ) | 後ろから検索し、文字列 searchString の位置を返す。ない時は -1。最後尾または position の位置から前に検索する |
| .localeCompare( that [ , reserved1 [ , reserved2 ] ] ) | 文字列 that がコンピューター上の文字の配列において String より前にくるか後ろにくるか同じかを比較 |
| .match( regexp ) | 正規表現 regexp を評価 |
| .matchAll( regexp ) | 正規表現 regexp が一致するすべてをイテレーターとして返す |
| .normalize( [ form ] ) | Unicode のコードポイントから該当する文字列を返す |
| .padEnd( maxLength [ , fillString ] ) | 文字列が指定する最大文字数 maxLength になるように fillString で埋める。fillString の指定がなければ空白 |
| .padStart( maxLength [ , fillString ] ) | 文字列が指定する最大文字数 maxLength になるように fillString で前方を埋める。fillString の指定がなければ空白 |
| .repeat( count ) | count 回数分だけ文字列を繰り返す |
| .replace( searchValue, replaceValue ) | searchValue を replaceValue に置換。searchValue は文字列または正規表現。文字列なら最初のみ置換 |
| .replaceAll( searchValue, replaceValue ) | searchValue にマッチする文字列をすべて replaceValue に置換。searchValue は文字列または正規表現 |
| .search( regexp ) | 正規表現 regexp で検索 |
| .slice( start [ , end ] ) | 指定区間 start から end までを抽出。引数が一つの場合は始めからの指定数 |
| .split( separator [ , limit ] ) | 指定した文字列または正規表現で分割 |
| .startsWith( searchString [ , position ] ) | 文字列 searchString で始まっているか/否か。Boolean 型。位置指定ができる |
| .substring( start [ , end ] ) | start から end まで文字列を切り出す。引数がひとつのときはその指定位置以降になる |
| .toLocaleLowerCase( [ reserved1 [ , reserved2 ] ] ) | 大文字を小文字へ変換。ローケル reserved の指定による |
| .toLocaleUpperCase( [ reserved1 [ , reserved2 ] ] ) | 小文字を大文字へ変換。ローケル reserved の指定による |
| .toLowerCase() | 大文字は小文字へ変換 |
| .toString() | 引数を文字列に変換。String オブジェクトを返す |
| .toUpperCase() | 小文字は大文字へ変換 |
| .trim() | 文字列の両端にある空白文字や改行文字をすべて削除 |
| .trimStart() | 文頭にある空白文字をすべて削除 |
| .trimEnd() | 文末にある空白文字をすべて削除 |
| .valueOf() | String オブジェクトのプリミティブ値(文字列としての値)を返す |
静的メソッド
以下は静的メソッドで、環境によって固定された値を返します。
| メソッド | 概要 |
|---|---|
| .fromCharCode( ...codeUnits ) | Unicode のキャラクターコードから該当する文字列を返す |
| .fromCodePoint( ...codePoints ) | Unicode のコードポイントから該当する文字列を返す |
| .raw( template, ...substitutions ) | 引数で指定する文字列を形成するテンプレートから、文字列を作成し返す |
キャラクターコードとコードポイント
UTF-16のキャラクターコードは2バイトごとに割り当てられています。
UTF-16では4バイト(2バイトの2つ分)に割り当てられている文字もあります。1文字を4バイトで割り当てられている場合はキャラクターコードは2つになります。
すべての文字を1意のコードで取得や指定するにはコードポイントを使用します。
Example
String の静的プロパティの例です。
確認
ボタンをクリックしてみてください。
その他
文字列の連結
文字列と変数を連結するには+
を使用します。
let temp = 27;
const example_message = "温度は " + temp + " ℃です"
console.log( example_message );
上記の例は以下のように表示されます。
温度は 27 ℃です
現在はテンプレートリテラル ${..}
を使うこともできます。
let temp = 27;
const example_message = "温度は ${ temp } ℃です"
console.log( example_message );
上記の例は以下のように表示されます。
温度は 27 ℃です
