【2026年7月最新】JavaScriptの文字列操作を完全解説!置換・連結・検索・比較など全メソッドを実例付きで紹介

【2026年7月最新】JavaScriptの文字列操作を完全解説!置換・連結・検索・比較など全メソッドを実例付きで紹介

「replace()で文字列を置換したいのにうまくいかない」「スペースを取り除くメソッドはどれ?」——JavaScriptの文字列操作は種類が多く、どのメソッドをいつ使えばいいかで迷いやすいポイントです。

この記事ではJavaScriptの文字列操作で頻出の20以上のメソッドを実例付きで完全解説します。連結・検索・置換・抽出・比較から、よくあるバグの対処法まで網羅します。後半ではClaude CodeでJavaScript文字列処理を自動生成・自動化する方法も解説します。

📚 用語解説

メソッドチェーン(Method Chaining):JavaScriptのメソッドを連続して呼び出すパターン。文字列メソッドは戻り値も文字列なので、str.trim().toLowerCase().replace("a","b")のように複数のメソッドを「.」でつなげて書ける。1行で複数の変換をまとめて記述できるため、フォーム入力値の正規化処理などでよく使われる。ただしエラーになる場合はどのメソッドが原因かわかりにくいため、デバッグ時は1行ずつ分割して確認する。

AI鬼管理山崎 AI鬼管理山崎
JavaScriptの文字列メソッドは「覚える量が多い」という印象がありますが、実際の現場で使うメソッドは15個程度に絞られます。この記事で頻出パターンを押さえれば、あとはClaude Codeに「このケースで使うメソッドを教えて」と聞けば完結します。
✔️replace・replaceAllによる置換パターンが使いこなせる
✔️indexOf・includes・startsWithで文字列の位置・存在確認ができる
✔️slice・splitで文字列の抽出・分割ができる
✔️trim・padStart・toUpperCaseで文字列を整形できる
✔️よくある比較ミス(==とstrictEquals)のトラップを回避できる
✔️Claude CodeでJavaScript文字列処理を効率化する方法がわかる
Claude Code 完全解説セミナー|経営者・会社役員専用 1on1 60分 無料Claude Codeを経営に活かしたい方へ — AI鬼管理
📌 この記事の結論
【2026年7月最新】JavaScriptの文字列操作を完全解説!置換・連結・検索・比較など全メソッドを実例付きで紹介
JavaScriptの文字列操作メソッドを完全解説。replace・indexOf・slice・split・includes・trimなど頻出20メソッドを実例付きで紹介。よくあるエラーと対処法、Claude Codeで文字列処理を自動化する方法まで網羅。

01 JavaScriptの文字列型の基礎——Stringオブジェクトを理解する 文字列リテラルとStringオブジェクトの違い・immutable(不変)の性質

📚 用語解説

イミュータブル(Immutable):JavaScriptの文字列は「変更不能」。replace()やtoUpperCase()などのメソッドは元の文字列を変更せず、加工した新しい文字列を返す。そのため「str.replace("a","b")」だけでは元のstrは変わらず、「str = str.replace("a","b")」のように変数に再代入する必要がある。

// 文字列を定義する3つの方法
const str1 = 'シングルクォート';    // ← 最もよく使う
const str2 = "ダブルクォート";       // ← OK
const str3 = `テンプレートリテラル`; // ← 変数埋め込み・複数行に使う

// 文字列はimmutable(変更不能)
let name = 'tanaka';
name.toUpperCase();  // ← 元のnameは変わらない!
console.log(name);   // tanaka(変わっていない)

name = name.toUpperCase();  // ← 再代入で初めて反映
console.log(name);           // TANAKA

文字列の長さはlength プロパティで取得できます。これはメソッドではなくプロパティなので()(括弧)は不要です:

const text = 'Hello, World!';
console.log(text.length);      // 13
console.log(text[0]);          // 'H'  ← インデックスアクセス
console.log(text.at(-1));      // '!'  ← at()で後ろからアクセス可(ES2022)
console.log(text.charAt(7));   // 'W'  ← charAt()で指定位置の文字
💡 at()はat(-1)で末尾の文字を取れる

ES2022で追加されたat()メソッドはマイナスインデックスに対応しています。text.at(-1)で末尾の文字、text.at(-2)で後ろから2番目の文字を取得できます。text[text.length-1]と同じ意味ですが、at()の方が読みやすく書けます。

文字列を1文字ずつ分解して処理したい場合は、Array.from()やスプレッド構文を使います。text.split("")は絵文字や日本語の扱いで問題が起きることがあるため、Array.from(text)の方が安全です。また、for...ofループでも文字列を1文字ずつ反復処理できます。

02 連結・テンプレートリテラル——文字列を組み合わせる4パターン concat・+演算子・テンプレートリテラル・Arrayのjoin

方法コード例特徴
+演算子"Hello" + " " + name最もシンプル。数値との混在に注意
テンプレートリテラル`Hello ${name}`変数・式・改行をそのまま書けて最も便利
concat()"Hello".concat(" ", name)複数の文字列を引数で渡せる
Array.join()["Hello", name].join(" ")配列の要素を区切り文字で結合
const first = '田中';
const last = '太郎';

// 1. +演算子(シンプルな連結)
const name1 = last + ' ' + first;

// 2. テンプレートリテラル(推奨)
const name2 = `${last} ${first}`;
const message = `こんにちは、${last} ${first}さん!今は${new Date().getHours()}時です。`;

// 3. 複数行文字列(テンプレートリテラルの強み)
const html = `
  <div class="user">
    <h2>${last} ${first}</h2>
    <p>ようこそ!</p>
  </div>
`;

// 4. Array.joinで区切り文字連結
const words = ['Apple', 'Banana', 'Cherry'];
console.log(words.join(', '));  // Apple, Banana, Cherry
console.log(words.join('・')); // Apple・Banana・Cherry

📚 用語解説

テンプレートリテラル(Template Literals):ES6で追加されたバッククォート(\`)で囲む文字列の書き方。${}の中にJavaScriptの変数や式を書けば文字列に埋め込まれる。改行をそのまま書けるため複数行の文字列も自然に表現できる。シングルクォートやダブルクォートよりも柔軟で、現代のJavaScript開発では最も多用される。

⚠️ +演算子で数値と文字列を混在させると意図しない結果に

数値と文字列を+演算子でつなぐと「文字列として結合」されます。1 + 2 + "円" = "3円"ですが、"合計:" + 1 + 2 = "合計:12"になります。意図した計算を先に括弧でくくるか、テンプレートリテラルで書くことで防げます。

03 検索・判定——indexOf・includes・startsWith・endsWith 文字列の中に何かがあるかを確認するメソッドを整理

メソッド戻り値用途
indexOf(str)位置(数値)/ -1文字列が最初に現れる位置を調べる。存在しなければ-1
lastIndexOf(str)位置(数値)/ -1文字列が最後に現れる位置を調べる
includes(str)true / false文字列が含まれているかを確認(位置は不要な場合)
startsWith(str)true / false文字列が指定した文字で始まるかを確認
endsWith(str)true / false文字列が指定した文字で終わるかを確認
search(regex)位置(数値)/ -1正規表現パターンで検索
const text = 'JavaScript文字列操作ガイド';

// indexOf: 位置を返す(見つからなければ-1)
console.log(text.indexOf('文字列'));      // 10
console.log(text.indexOf('Python'));      // -1(見つからない)

// includes: 含まれているか(true/false)
console.log(text.includes('文字列'));     // true
console.log(text.includes('Python'));     // false

// startsWith / endsWith
console.log(text.startsWith('Java'));     // true
console.log(text.endsWith('ガイド'));     // true

// 実践的な使い方:URLの判定
const url = 'https://example.com/about';
if (url.startsWith('https://')) {
  console.log('安全なHTTPS接続');
}
if (url.endsWith('/about')) {
  console.log('Aboutページへのリンク');
}
💡 includesとindexOfの使い分け

「文字列が含まれているかだけわかればいい」→includes()がシンプルで読みやすい。「含まれている位置も知りたい」「見つかった場合にさらに処理したい」→indexOf()を使う。モダンなコードではincludesが好まれる傾向があります。

Claude Code 完全解説セミナー|経営者・会社役員専用 1on1 60分 無料Claude Codeを経営に活かしたい方へ — AI鬼管理

04 抽出・分割——slice・substring・split 文字列の一部を取り出す・区切り文字で分割するメソッド

📚 用語解説

スライス(Slice):文字列や配列の一部分を切り取る操作。JavaScriptのslice(start, end)は開始インデックス(含む)から終了インデックス(含まない)までの部分文字列を返す。マイナスインデックスに対応しており、slice(-3)は「末尾から3文字」を意味する。Pythonのスライス記法と同じ概念。

const str = 'Hello, World!';

// slice(start, end)  ← マイナスインデックス対応
console.log(str.slice(0, 5));    // 'Hello'
console.log(str.slice(7));       // 'World!'(末尾まで)
console.log(str.slice(-6));      // 'orld!'(末尾から6文字)
console.log(str.slice(-6, -1));  // 'orld'

// substring(start, end)  ← マイナスは0として扱う
console.log(str.substring(0, 5));  // 'Hello'
console.log(str.substring(7));     // 'World!'

// split: 区切り文字で配列に分割
const csv = '田中,山田,鈴木,佐藤';
const names = csv.split(',');
console.log(names);  // ['田中', '山田', '鈴木', '佐藤']

// 文字を1文字ずつの配列に
const letters = 'abc'.split('');
console.log(letters);  // ['a', 'b', 'c']

// 最大分割数の指定
const text = 'a:b:c:d:e';
console.log(text.split(':', 3));  // ['a', 'b', 'c'](3つまで)
文字列
"田中,山田,鈴木"
split(",")で
配列に分割
配列操作・加工
(filter, map等)
join(",")で
文字列に戻す
完成文字列

05 置換——replace・replaceAll・正規表現との組み合わせ 最初の1箇所だけ・全部置換・パターン置換の3パターン

const text = 'Hello World, Hello JavaScript!';

// replace: 最初に見つかった1箇所だけ置換
console.log(text.replace('Hello', 'Hi'));
// 'Hi World, Hello JavaScript!' ← 最初のHelloだけ変わる

// replaceAll: 全て置換(ES2021)
console.log(text.replaceAll('Hello', 'Hi'));
// 'Hi World, Hi JavaScript!' ← 全てのHelloが変わる

// 正規表現で全て置換(replaceAll以前の方法)
console.log(text.replace(/Hello/g, 'Hi'));  // /g フラグで全置換
// 'Hi World, Hi JavaScript!'

// 大文字小文字を無視して置換(iフラグ)
const str = 'apple APPLE Apple';
console.log(str.replace(/apple/gi, 'banana'));
// 'banana banana banana'

// コールバック関数で動的な置換
const prices = '500円, 1000円, 2500円';
const doubled = prices.replace(/(\d+)/g, (match) => parseInt(match) * 2 + '');
console.log(doubled);  // '1000円, 2000円, 5000円'
AI鬼管理山崎 AI鬼管理山崎
replace()は「最初の1箇所だけ」という挙動を知らずに使うと予期しないバグが出ます。全体を置換したい場合は必ずreplaceAll()か/g正規表現を使いましょう。これはJavaScript初学者が最もはまるポイントの一つです。
⚠️ replace()は最初の1つしか置換しない

str.replace("apple","banana")は文字列中に"apple"が複数あっても最初の1つしか変換しません。全部置換したい場合はreplaceAll()を使うか、replace(/apple/g, "banana")のように正規表現にgフラグをつけます。

06 変換・整形——大文字小文字・trim・pad・repeat 文字列を整えるメソッド群——入力値のバリデーション・表示形式の統一に使う

メソッド用途
toUpperCase()"hello".toUpperCase() → "HELLO"全て大文字に変換
toLowerCase()"HELLO".toLowerCase() → "hello"全て小文字に変換
trim()" hello ".trim() → "hello"前後の空白・改行を除去
trimStart()" hello ".trimStart() → "hello "先頭の空白だけ除去
trimEnd()" hello ".trimEnd() → " hello"末尾の空白だけ除去
padStart(n, str)"5".padStart(3,"0") → "005"文字数を左から埋める
padEnd(n, str)"5".padEnd(3,"0") → "500"文字数を右から埋める
repeat(n)"ab".repeat(3) → "ababab"文字列をn回繰り返す
// 大文字・小文字変換(メールアドレスの正規化など)
const email = '  Tanaka@Example.COM  ';
const normalized = email.trim().toLowerCase();
console.log(normalized);  // 'tanaka@example.com'

// padStart: 数字の0埋め(日付・コード生成)
const num = 5;
console.log(String(num).padStart(3, '0'));  // '005'
console.log(String(num).padStart(5, '0'));  // '00005'

// 実践例:日付のフォーマット
const d = new Date();
const year = d.getFullYear();
const month = String(d.getMonth() + 1).padStart(2, '0');
const day = String(d.getDate()).padStart(2, '0');
console.log(`${year}-${month}-${day}`);  // '2026-07-14'

// repeat: ローディングドットや区切り線の生成
const separator = '-'.repeat(40);
console.log(separator);  // '----------------------------------------'
💡 trim()はフォーム入力値のバリデーションの必須前処理

ユーザーが入力したテキストには予期しない先頭・末尾のスペースが入ることがあります。バリデーション前にtrim()を実行する習慣をつけると、「スペースだけ入力してsubmitされた」や「比較が一致しない」といったバグを防げます。

Claude Code 完全解説セミナー|経営者・会社役員専用 1on1 60分 無料Claude Codeを経営に活かしたい方へ — AI鬼管理

07 よくある落とし穴とエラー——比較の罠・型変換の注意点 初心者が必ずはまるJavaScript文字列の罠を先取りして回避

📚 用語解説

参照比較と値比較:JavaScriptではプリミティブな文字列を==や===で比較すると値が等しいか確認される。しかしnew String()で生成したStringオブジェクトを==で比較すると「参照が同じか」を比較するため、見た目が同じでもfalseになる。文字列はリテラル(クォートで囲む)で定義し、Stringオブジェクトを明示的に作ることは避けるべき。

// 落とし穴1: ==と===の違い(文字列と数値の混在)
console.log('5' == 5);    // true(型を変換して比較)
console.log('5' === 5);   // false(型も含めて厳密に比較)

// フォームの入力値は文字列として来るので注意
const input = '42';  // フォームから来た値
if (input === 42) {  // これは false!
  console.log('42です');
}
if (Number(input) === 42) {  // 数値に変換してから比較
  console.log('42です');  // こちらが正しい
}

// 落とし穴2: NullやUndefinedへのメソッド呼び出し
let str = null;
str.toUpperCase();  // ← TypeError: Cannot read properties of null

// 安全な書き方
const result = str?.toUpperCase() ?? '(未設定)';
console.log(result);  // (未設定)

// 落とし穴3: 数値と文字列の+演算子
console.log(1 + 2 + '円');    // '3円'(左から評価)
console.log('合計:' + 1 + 2); // '合計:12'(12ではなく!)
console.log('合計:' + (1 + 2)); // '合計:3'(括弧で先に計算)
代表菅澤 代表菅澤
JavaScriptの文字列比較で===(3つのイコール)を使う習慣は最優先で身につけてください。==(2つのイコール)は型変換が起きるため、意図しない比較結果になることがあります。

08 【比較】手書き vs Claude Code——JS文字列処理の自動化 JavaScript文字列操作の悩みをClaude Codeに丸投げする実践法

ここまでJavaScriptの文字列操作を詳しく解説しました。後半では「Claude Codeにこれらを書かせる・自動生成する」という実践的なアプローチを解説します。

比較軸手書きClaude Code
学習コスト20以上のメソッドを覚える必要がある要件を日本語で伝えるだけでOK
正規表現の作成複雑な正規表現は作成に時間がかかるパターンを説明すると即生成
エラーの対処原因を自分で特定・修正するエラーをペーストすれば解決策を提示
バリデーション実装メールアドレス正規表現などを自分で書く「メールアドレスを検証する関数を書いて」で完成

8-1. Claude CodeへのJavaScript文字列処理依頼の実践例

✔️「フォームから入力された文字列のバリデーションを行うJavaScript関数を書いて。名前(1-50文字)・メールアドレス・電話番号(ハイフンあり/なし両対応)を検証したい」
✔️「このCSV文字列を行ごとに分割して、各行を配列に変換し、ヘッダー行を除いたオブジェクトの配列を返す関数を書いて」
✔️「日本語の文字列から英数字・スペース以外を全て除去した後、英字は全て小文字に統一する処理を書いて」
✔️「replace()で置換しようとしたら最初の1つしか変わらない。replaceAll()とregexpの違いも含めて修正して」
文字列処理の要件を
日本語で説明
Claude Codeが
JSコードを生成
コードをコピー・
テスト実行
エラーや修正点を
Claude Codeに伝える
期待通りの
処理が完成
🏆
VERDICT
Claude Code に軍配
JavaScriptの文字列処理はClaude Codeが非常に得意なカテゴリ。正規表現やメソッドの組み合わせを自分で試行錯誤する前に、まずClaude Codeに説明してみることで開発速度が大幅に上がる。
代表菅澤 代表菅澤
弊社GENAIでは、WebスクレイピングやAPIからのデータ加工など、文字列処理が大量に発生する業務をClaude Codeで実装しています。「このJSONの値から特定のパターンを抽出してCSVに変換したい」という依頼でも、5分以内にコードが完成します。
cc-js-string-methods

NEXT STEP

この記事の内容を、あなたのビジネスで
実践してみませんか?

AI活用を自社で回せるようになりたい方へ

AI鬼管理

Claude Code・Cowork導入支援から業務設計・社内浸透まで実践ベースで伴走。「自社で回せる組織」を90日で作る経営者向けトレーニング。

よくある質問

Q. JavaScriptで文字列を全て置換するには?

A. str.replaceAll("検索文字","置換文字")が最も簡単です。ES2021で追加されました。古い環境や正規表現パターンで置換する場合はstr.replace(/検索パターン/g,"置換文字")のようにgフラグをつけた正規表現を使います。replace()だけだと最初の1つしか置換されないので注意してください。

Q. 文字列に含まれているかを確認する方法は?

A. str.includes("検索文字")が最もシンプルです。含まれていればtrue、含まれていなければfalseを返します。位置(何文字目か)も知りたい場合はindexOf()を使います(見つからなければ-1を返します)。文字列の先頭・末尾だけを確認したい場合はstartsWith()・endsWith()が便利です。

Q. 文字列の前後のスペースを除去するには?

A. str.trim()で前後両方のスペースと改行を除去できます。先頭だけ除去したい場合はtrimStart()、末尾だけはtrimEnd()を使います。フォームの入力値処理では必ずtrim()を先に実行してからバリデーションすることを推奨します。

Q. 文字列を区切り文字で分割・結合する方法は?

A. 分割はsplit()、結合はArray.join()を使います。"田中,山田,鈴木".split(",")で["田中","山田","鈴木"]の配列に、逆に["田中","山田","鈴木"].join("・")で"田中・山田・鈴木"に変換できます。CSVデータの処理やURL操作でよく使う組み合わせです。

Q. 数値を0埋めの文字列にするには?

A. String(数値).padStart(桁数,"0")を使います。例えばString(5).padStart(3,"0")→"005"です。月や日を2桁表示したい場合はString(月).padStart(2,"0")とします。JavaScriptの日付フォーマット(YYYY-MM-DD形式)でよく使うパターンです。

Q. Claude Codeでjavascript文字列処理はできますか?

A. はい、Claude CodeはJavaScriptの文字列操作が非常に得意です。「このJSON文字列を整形したい」「フォームの入力値を検証するコードを書きたい」「正規表現がうまく書けない」など、やりたいことを日本語で伝えるだけでコードを生成できます。エラーが出た場合もエラーメッセージをそのままペーストすると修正コードを提示してくれます。

AIAI鬼管理

AI鬼管理へのお問い合わせ

この記事を読んで気になった方へ。
AI鬼管理の専門スタッフが、御社に最適な
業務自動化プランを無料でご提案します。

会社名を入力してください
業種を選択してください
お名前を入力してください
正しいメールアドレスを入力してください

1つ以上選択してください
1つ以上選択してください
月額コストを選択してください

約1時間のオンライン面談(Google Meet)です

空き枠を取得中...
面談日時を選択してください

予約確定後、Google Calendarの招待メールをお届けします。
しつこい営業は一切ございません。

監修 最終更新日: 2026年7月14日
菅澤孝平
菅澤 孝平 株式会社GENAI 代表取締役
  • AI業務自動化サービス「AI鬼管理」を運営 — Claude Code を活用し、経営者の業務を「AIエージェントに任せる仕組み」へ転換するパーソナルトレーニングを 伴走構築 で提供。日報・採用・問い合わせ対応・経費精算・議事録・データ集計・営業リスト等の定型業務を、AIに代行させる体制を経営者と一緒に作り込む
  • Claude Code 実装ノウハウを 経営者・法人クライアント に直接指導。生成AIを「便利ツール」ではなく 「業務を任せる存在」 として運用する手法を体系化
  • 「やらせ切る管理」メソッドの開発者。シンゲキ株式会社(2021年設立・鬼管理専門塾運営)にて累計3,000名以上の学習者を志望校合格に導いた管理メソッドを、AI × 経営者支援 に転用
  • 著書『3カ月で志望大学に合格できる鬼管理』(幻冬舎)、『親の過干渉こそ、最強の大学受験対策である。』(講談社)
  • メディア出演: REAL VALUE / カンニング竹山のイチバン研究所 / ええじゃないかBiz 他
  • 明治大学政治経済学部卒
現在は AI鬼管理(Claude Code活用の伴走型パーソナルトレーニング)を主事業とし、経営者と二人三脚で「AIに業務を任せる仕組み」を実装。「実行を強制する環境」を AI で構築する手法を、自社の実運用知見をもとに発信している。