

Stringオブジェクトとは?
JavaScriptのStringオブジェクトは、文字列データを操作するための機能を提供するラッパーオブジェクトです。文字列の長さの取得、部分抽出、大文字・小文字の変換、検索、置換など、文字列操作に関する多くのメソッドやプロパティを備えており、Web開発において頻繁に利用されます。
Stringオブジェクトとよく使われるプロパティとメソッド
length
→文字列の長さ(文字数)を取得できる
toUpperCase() / toLowerCase()
→文字列を大文字 / 小文字を変換できる
char(n)
→n番目の文字を取得
slice(start, end)
→start~endの文字を取得
substring(start, end)
→start~endの文字を取得
※sliceとは引数によって出力が異なるので注意が必要です。
indexOf()
→先頭から検索して初めて検索した文字列が見つかった位置を返します。
lastIndexOf()
→後方から検索して初めて検索した文字列が見つかった位置を返します。
includes()
→部分一致で特定の文字列が含まれているか判定する
startsWith()
→前方一致で特定の文字列が含まれているか判定する
endsWith()
→後方一致で特定の文字列が含まれているか判定する
trim()
→文字列に含まれている空白を除去できる。
trimStart()
→文字列に含まれている最初の空白を除去できる
trimEnd()
→文字列に含まれている最後の空白を除去できる
replace(substr, repstr)
→一致した最初の文字列を置換する
replaceAll(substr, repstr)
→一致した文字列すべてを置換する
split()
→文字列を分割できる
padStart()
→文字列の最初に文字列の長さを調整する為に文字を追加できる。
padEnd()
→文字列の最後に文字列の長さを調整する為に文字を追加できる。
repeat()
→文字列を指定した回数出力することができる
基本的な使い方
// length
const str = "Hello";
console.log(str.length); // 5
// toUpperCase() / toLowerCase()
const str = "Hello";
console.log(str.toUpperCase()); // "HELLO"
console.log(str.toLowerCase()); // "hello"
// charAt(n)
const str = "Hello";
console.log(str.charAt(1)); // "e"
// slice(start, end)
const str = "JavaScript";
console.log(str.slice(0, 4)); // "Java"
// substring(start, end)
const str = "JavaScript";
console.log(str.substring(4, 10)); // "Script"
// indexOf()
const str = "banana";
console.log(str.indexOf("a")); // 1(最初の "a" の位置)
// lastIndexOf()
const str = "banana";
console.log(str.lastIndexOf("a")); // 5(最後の "a" の位置)
// includes()
const str = "I love JS";
console.log(str.includes("love")); // true
console.log(str.includes("hate")); // false
// startsWith()
const str = "JavaScript";
console.log(str.startsWith("Java")); // true
// endsWith()
const str = "Hello.js";
console.log(str.endsWith(".js")); // true
// trim()
const str = " hello ";
console.log(str.trim()); // "hello"
// trimStart()
const str = " hello ";
console.log(str.trimStart()); // "hello "
// trimEnd()
const str = " hello ";
console.log(str.trimEnd()); // " hello"
// replace(substr, repstr)
const str = "I like apples";
console.log(str.replace("apples", "oranges")); // "I like oranges"
// replaceAll(substr, repstr)
const str = "red apple, red cherry";
console.log(str.replaceAll("red", "green")); // "green apple, green cherry"
// split()
const str = "apple,banana,cherry";
console.log(str.split(",")); // ["apple", "banana", "cherry"]
// padStart()
const str = "5";
console.log(str.padStart(3, "0")); // "005"
// padEnd()
const str = "5";
console.log(str.padEnd(3, "0")); // "500"
// repeat()
const str = "ha";
console.log(str.repeat(3)); // "hahaha"
メリットと注意点
メリット
便利な文字列操作メソッドが豊富
slice()、replace()、includes()など、よく使われる文字列操作メソッドが数多く用意されており、文字列の抽出・検索・置換が簡単に行えます。
イミュータブル(不変)で安全
JavaScriptの文字列はイミュータブル(変更不可)なため、操作を行っても元の文字列を破壊せず新しい文字列を返す仕様です。これにより、副作用の少ない安全なコードが書けます。
プリミティブ文字列でもオブジェクトのように扱える
abc.length や “abc.toUpperCase() のように、文字列リテラル(プリミティブ型)でもメソッドが使えるのが特徴。JavaScriptエンジンが一時的にStringオブジェクトに変換するため、直感的な操作が可能です。
正規表現と組み合わせた強力なテキスト処理
replace() や match()、search() といったメソッドは、正規表現と併用することで高度なパターンマッチや置換が可能となり、柔軟な文字列処理に対応できます。
注意点
プリミティブ型とStringオブジェクトの違いに注意"abc"
はプリミティブ型ですが、new String("abc")
はオブジェクト型です。型の違いにより、===
比較などで意図しない挙動を起こすことがあります。
イミュータブルであることを意識する
文字列は直接変更できないため、操作結果を常に新しい変数に代入する必要があります。
例:str = str.replace(“a”, “b”)
大量の文字列連結はパフォーマンスに注意
+ や += を使って文字列を繰り返し結合する場合、パフォーマンスが低下する可能性があります。特にループ内では、配列に文字列を溜めて最後に join() する方法がより効率的です。
Unicodeやサロゲートペアに関する挙動に注意
一部の絵文字や漢字は、1文字に見えても実際は2コードユニットで構成されており、length で数えると想定より大きな値になることがあります。文字単位で正確に処理したい場合は、Array.from()や正規表現(/uフラグ付き)などの対策が必要です。
まとめ
JavaScriptのStringオブジェクトは、slice()
、replace()
、includes()
などの豊富なメソッドによって、文字列の抽出・検索・置換などの処理を直感的かつ効率的に行うことができます。さらに、文字列は**イミュータブル(不変)**であるため、安全に操作できる点も大きな特徴です。
ただし、プリミティブ型とオブジェクト型の違いや、大量の文字列連結によるパフォーマンス低下、Unicode(絵文字・サロゲートペア)による文字数カウントのずれには注意が必要です。
基本的な使い方と注意点を押さえることで、文字列処理のトラブルを防ぎ、スムーズな開発が可能になります。
参考文献
改訂3版JavaScript本格入門 ~モダンスタイルによる基礎から現場での応用まで
JavaScript | MDN