【2026年7月最新】JavaScript substr・substring・slice 文字列切り出し完全ガイド|非推奨から移行法・実務例・Claude Code活用まで
この記事の内容
JavaScriptで文字列を切り出す方法を調べると「substr・substring・slice」の3つが出てきます。これらの違いが分からなくて、とりあえず動いた方法を使い続けている方も多いのではないでしょうか。
実はsubstr()は現在非推奨(deprecated)であり、将来的に削除される可能性があります。にもかかわらず、多くの解説記事がいまだに非推奨の substr を中心に解説しているのが現状です。今後はslice()かsubstring()を使うのが正しい選択であり、この記事ではその理由と使い方を徹底的に解説します。
01 OVERVIEW substr・substring・sliceの違いを先に把握する 3つの引数構造と推奨度の比較
まず3メソッドの構文を並べて確認します。この違いを最初に押さえておくことで、後の詳細説明が理解しやすくなります。
// 3つのメソッドの構文比較 const str = "Hello World"; // ① substring(開始インデックス, 終了インデックス) ← 推奨 str.substring(0, 5) // → "Hello" (0番目から5番目の直前まで) // ② slice(開始インデックス, 終了インデックス) ← 推奨(負のインデックス可) str.slice(0, 5) // → "Hello" (substrとほぼ同じ動作) str.slice(-5) // → "World" (末尾から5文字) // ③ substr(開始インデックス, 文字数) ← 非推奨! str.substr(0, 5) // → "Hello" (0番目から5文字分)
| メソッド | 第1引数 | 第2引数 | 負のインデックス | 推奨度 |
|---|---|---|---|---|
| substring() | 開始インデックス | 終了インデックス(含まない) | 0として扱う(注意) | ◎ 推奨 |
| slice() | 開始インデックス | 終了インデックス(含まない) | 末尾からのオフセット(直感的) | ◎ 推奨 |
| substr() | 開始インデックス | 切り出す文字数 | 負のインデックス可(一部) | × 非推奨(deprecated) |
📚 用語解説
インデックス(Index):文字列の各文字の位置番号。JavaScriptでは0から始まる。"Hello"の場合、H=0、e=1、l=2、l=3、o=4。終了インデックスを指定する場合、その位置の文字は含まれない("Hello".slice(0,3) → "Hel"、3番目のlは含まれない)。
3つのうちどれを使えばいいか迷う場面では、slice()を選べば間違いありません。substrと同じく開始位置からの指定が直感的で、かつ負のインデックスも自然に使え、非推奨でもない。substring()は引数の順序が逆転するエッジケースがあるため、シンプルに使うならsliceの方が安全です。
02 DEPRECATED substr()の使い方(非推奨)とdeprecation理由 既存コードの理解のために知っておく。新規はslice()に移行する
MDN Web Docsでは substr() は「Web標準から削除される予定(deprecated)」と明記されています。古いコードの読解には役立ちますが、新規コードでsubstr()を書くことは推奨しません。slice() または substring() を使いましょう。
substr()の構文は str.substr(start, length) です。第2引数が「終了インデックス」ではなく「切り出す文字数」である点がsubstringやsliceとの最大の違いです。
const str = "Hello World"; // 01234567890 ← インデックス // 基本: substr(開始インデックス, 文字数) str.substr(0, 5) // → "Hello" (0番目から5文字) str.substr(6, 5) // → "World" (6番目から5文字) str.substr(6) // → "World" (第2引数省略=末尾まで) // 負の開始インデックス(末尾からのオフセット) str.substr(-5) // → "World" (末尾から5文字) str.substr(-5, 3) // → "Wor" (末尾から5文字目を起点に3文字) // 第2引数が0または負数の場合 str.substr(0, 0) // → "" (空文字列) str.substr(0, -1) // → "" (負数の文字数は空文字列)
substr()がdeprecatedになった理由
substr()が非推奨になった理由は主に2点です。①他の言語と引数の意味が異なるため混乱を招く(多くの言語では「開始位置, 終了位置」が標準的)。②substringとsliceで同等の機能が提供されており、substr固有の利点がほぼないため。ECMAScript仕様でも「Annex B(旧形式の機能)」に分類されており、将来のブラウザやNode.jsで削除される可能性があります。
// substrからsliceへの移行パターン // substr(start, length) → slice(start, start + length) // Before (非推奨) str.substr(3, 5) // After (推奨) str.slice(3, 3 + 5) // = str.slice(3, 8) // 第2引数なし(末尾まで)の場合 str.substr(3) // Before str.slice(3) // After(同じ書き方でOK) // 負の開始インデックスの場合 str.substr(-5) // Before str.slice(-5) // After(同じ書き方でOK)
03 SUBSTRING substring()の使い方と負のインデックスの落とし穴 substrと混同しやすい第2引数の意味と特殊挙動
substring()の構文は str.substring(start, end) です。第2引数は「文字数」ではなく「終了インデックス(その位置の文字を含まない)」です。
const str = "Hello World"; // 01234567890 // 基本: substring(開始インデックス, 終了インデックス) str.substring(0, 5) // → "Hello" (0〜4番目まで、5番目を含まない) str.substring(6, 11) // → "World" (6〜10番目まで) str.substring(6) // → "World" (第2引数省略=末尾まで) // ★ 特殊挙動①: 引数が逆転した場合は自動的にスワップ str.substring(5, 0) // → "Hello" (substringは(0,5)として処理する) // ★ 特殊挙動②: 負のインデックスは 0 として扱われる str.substring(-3, 5) // → "Hello" (-3は0として扱われ、(0,5)と同じ) str.substring(3, -1) // → "Hel" (-1は0扱い、(0,3)にスワップ)
substring()では、負のインデックスをそのまま「末尾からのオフセット」として使うことができません。-5を渡しても末尾から5文字前ではなく、0(先頭)として扱われます。末尾からの相対位置で切り出したい場合は slice() を使いましょう。
| 操作 | substring() | slice()(参考) |
|---|---|---|
| 末尾から5文字 | substring(str.length - 5)(長さから計算が必要) | slice(-5)(直感的) |
| 引数が逆転したとき | 自動スワップして処理(エラーにならない) | 空文字列を返す |
| 負のインデックス | 0として扱う | 末尾からのオフセットとして扱う |
📚 用語解説
substring()の引数スワップ仕様:str.substring(start, end) で start > end の場合(例: substring(8, 3))、JavaScriptは自動的に引数を入れ替えてsubstring(3, 8)として処理する。エラーは発生しないが、意図しない結果になることがある。sliceは同じ状況で空文字列を返す。
04 SLICE slice()の使い方|負のインデックスが最も直感的 3メソッドの中で最も柔軟で推奨されるslice()の完全解説
slice()の構文は str.slice(start, end) です。substringと同じく第2引数は終了インデックスですが、負のインデックスを「末尾からのオフセット」として正しく扱う点が最大の違いです。
const str = "Hello World"; // 01234567890 (正のインデックス) // -11-10-9-8-7-6-5-4-3-2-1 (負のインデックス) // 基本: slice(開始インデックス, 終了インデックス) str.slice(0, 5) // → "Hello" (0〜4番目まで) str.slice(6, 11) // → "World" (6〜10番目まで) str.slice(6) // → "World" (第2引数省略=末尾まで) // 負の開始インデックス(末尾からのオフセット) str.slice(-5) // → "World" (末尾から5文字) str.slice(-5, -2) // → "Wor" (末尾から5文字目〜末尾から2文字目の直前) str.slice(-5, 9) // → "Wo" (負と正のインデックスを混在させることも可能) // 開始 > 終了の場合(substrとは異なり空文字列を返す) str.slice(5, 0) // → "" (スワップされない、空文字列) str.slice(-1, -5) // → "" (終了が開始より前、空文字列)
JavaScriptのArray.prototype.slice()もString.prototype.slice()と全く同じシグネチャ(引数の構造)を持ちます。文字列のsliceを覚えれば配列のsliceも同じ感覚で使えるため、一度理解すれば応用範囲が広いです。
"Hello"
(正→正)
"World"
(負→末尾)
"Wor"
(負→負)
"lo Worl"
(正→負混在)
05 COMPARE 3メソッドの引数・挙動を完全比較 同じ結果を得るコードと、挙動が変わるエッジケース
3つのメソッドは通常ケースでは似たような結果を返しますが、引数が特殊な場合(負の値・引数の順序逆転・省略等)で動作が異なります。
const str = "Hello World"; // length = 11 // ===== 基本ケース(ほぼ同じ結果)===== str.substring(0, 5) // "Hello" str.slice(0, 5) // "Hello" str.substr(0, 5) // "Hello"(非推奨) // ===== 第2引数省略(末尾まで)===== str.substring(6) // "World" str.slice(6) // "World" str.substr(6) // "World"(非推奨) // ===== 負の開始インデックス ===== str.slice(-5) // "World" ← 末尾から5文字 str.substring(-5) // "Hello World" ← -5を0として扱う(全体) str.substr(-5) // "World" ← substrは負のstart対応(非推奨) // ===== 開始インデックス > 終了インデックス ===== str.slice(8, 3) // "" ← 空文字列 str.substring(8, 3) // "lo Wo" ← 自動スワップ(substring(3,8)と同じ) // ===== 引数がundefined ===== str.slice(undefined, 5) // "Hello" ← undefinedは0として扱う str.substring(undefined, 5)// "Hello" ← undefinedは0として扱う // ===== 文字列長を超えたインデックス ===== str.slice(0, 100) // "Hello World" ← 末尾まで(エラーにならない) str.substring(0, 100) // "Hello World" ← 末尾まで(エラーにならない) str.substr(0, 100) // "Hello World" ← 末尾まで(非推奨)
| ケース | substring() | slice() | substr() |
|---|---|---|---|
| str.xxx(0, 5) | "Hello" | "Hello" | "Hello"(文字数5) |
| str.xxx(-5) | "Hello World"(-5→0扱い) | "World"(末尾5文字) | "World"(末尾5文字) |
| str.xxx(8, 3) | "lo Wo"(自動スワップ) | ""(空文字) | "lo Wo"(文字数-5→0) |
| str.xxx(3) | "lo World" | "lo World" | "lo World" |
| 今後の使用 | ◎ 推奨 | ◎ 推奨 | × 非推奨(deprecated) |
06 UNICODE 日本語・Unicode・絵文字を正しく扱う方法 サロゲートペアの問題とat()・スプレッド演算子での対処
substring()・slice()・substr()はすべてJavaScript内部のUTF-16コードユニット単位で動作します。日本語のひらがな・漢字はUTF-16で1コードユニット(1文字=1インデックス)ですが、絵文字(emoji)や一部の漢字(𠮷など)はUTF-16で2コードユニット(サロゲートペア)を使うため、sliceで切り出すと文字が壊れることがあります。
📚 用語解説
サロゲートペア(Surrogate Pair):Unicode文字のうち、U+10000以上の文字(絵文字・特殊記号・一部漢字)をJavaScriptの内部表現UTF-16で格納する際に2つのコードユニットを組み合わせて1文字を表す方式。javascriptの.lengthや通常のslice/substring/substrはコードユニット単位で数えるため、サロゲートペア文字は「1文字」ではなく「2」と数えられてしまう。
// 通常の日本語は問題なし(ひらがな・漢字はBMP内)
const jp = "こんにちは";
jp.length // 5(正しい)
jp.slice(0, 3) // "こんに"(正しい)
// 絵文字はサロゲートペア(2コードユニット = 長さ2として扱われる)
const emoji = "Hello😀World";
emoji.length // 13("😀"が2としてカウントされるため12ではなく13)
emoji.slice(5, 6) // ""(壊れた文字!絵文字の前半だけ)
emoji.slice(5, 7) // "😀"(2つ取れば正しく取得できる)
// 𠮷(U+20BB7 / 吉の旧字)もサロゲートペア
const special = "𠮷野家";
special.length // 4("𠮷"が2文字分にカウント)
special.slice(0, 2) // "𠮷"(2コードユニット取ると正しい)
special.slice(0, 1) // ""(壊れる)
// 正しく1文字ずつ扱う方法
// ① スプレッド演算子で配列化(サロゲートペアを正しく1文字として扱う)
[...emoji].length // 12(絵文字を1文字としてカウント)
[...emoji].slice(5, 6).join('') // "😀"(正しく取得)
// ② Array.from()も同じ
Array.from(emoji).length // 12
Array.from(emoji).slice(5, 6).join('') // "😀"
// ③ String.prototype.at()は正のインデックスのみ(サロゲートペアは非対応)
emoji.at(5) // ""(at()もコードユニット単位なので壊れる)
// ④ Intl.Segmenter(最新のAPIで書記素クラスタ単位に分割)
const segmenter = new Intl.Segmenter('ja', { granularity: 'grapheme' });
const segments = [...segmenter.segment(emoji)].map(s => s.segment);
segments.length // 12
segments.slice(5, 6) // ["😀"]
日常的によく使う日本語(ひらがな・カタカナ・一般的な漢字)は Unicode BMP(U+0000〜U+FFFF)内に収まるため、1文字 = 1コードユニットです。通常のslice()・substring()で正しく動作します。サロゲートペアの問題が起きるのは、主に絵文字・特殊記号・一部の稀な漢字を含む文字列を処理するときです。
07 USE CASES 実務ユースケース別テンプレートコード集 URL解析・ファイル拡張子・テキスト切り捨てなど
7-1. ファイル名から拡張子を取得する
// ファイル名から拡張子を取得(例: "photo.jpg" → ".jpg")
function getExtension(filename) {
const dotIndex = filename.lastIndexOf('.');
if (dotIndex === -1) return ''; // ドットがなければ拡張子なし
return filename.slice(dotIndex); // ドット含む拡張子
}
getExtension('photo.jpg') // → ".jpg"
getExtension('archive.tar.gz') // → ".gz"(最後のドット以降)
getExtension('README') // → ""(拡張子なし)
// 拡張子なしのファイル名部分だけ取得
function getBaseName(filename) {
const dotIndex = filename.lastIndexOf('.');
if (dotIndex === -1) return filename;
return filename.slice(0, dotIndex);
}
getBaseName('photo.jpg') // → "photo"
getBaseName('archive.tar.gz') // → "archive.tar"
7-2. URLからパス・クエリパラメータを取り出す
// URLからホスト名以降のパスを取り出す
function getPathFromUrl(url) {
// "https://example.com/path/to/page?q=test" → "/path/to/page?q=test"
const protocolEnd = url.indexOf('://');
if (protocolEnd === -1) return url;
const hostStart = protocolEnd + 3;
const pathStart = url.indexOf('/', hostStart);
if (pathStart === -1) return '/';
return url.slice(pathStart);
}
getPathFromUrl('https://example.com/blog/article-1')
// → "/blog/article-1"
// クエリパラメータ前のパスだけ取り出す
function getCleanPath(url) {
const path = getPathFromUrl(url);
const qIndex = path.indexOf('?');
return qIndex === -1 ? path : path.slice(0, qIndex);
}
getCleanPath('https://example.com/blog/article-1?utm_source=google')
// → "/blog/article-1"
7-3. テキストを指定文字数で切り捨てて「...」を付ける
// テキストをmaxLen文字で切り捨てて末尾に"..."を付ける
function truncate(text, maxLen, suffix = '...') {
if (text.length <= maxLen) return text;
return text.slice(0, maxLen - suffix.length) + suffix;
}
truncate('JavaScriptで文字列を切り出す完全ガイド', 15)
// → "JavaScriptで文字列..."(15文字以内に収める)
truncate('短いテキスト', 20)
// → "短いテキスト"(maxLen以下ならそのまま)
// 単語の途中で切れないようにする版(英語テキスト向け)
function truncateAtWord(text, maxLen) {
if (text.length <= maxLen) return text;
const truncated = text.slice(0, maxLen);
const lastSpace = truncated.lastIndexOf(' ');
return (lastSpace > 0 ? truncated.slice(0, lastSpace) : truncated) + '...';
}
7-4. 電話番号・郵便番号のフォーマット変換
// "0312345678"(10桁)→ "03-1234-5678" に変換
function formatPhoneNumber(phone) {
const digits = phone.replace(/\D/g, ''); // 数字のみ抽出
if (digits.length === 10) {
// 市外局番2桁 + 4桁 + 4桁
return digits.slice(0, 2) + '-' + digits.slice(2, 6) + '-' + digits.slice(6);
}
if (digits.length === 11) {
// 携帯: 090/080/070 3桁 + 4桁 + 4桁
return digits.slice(0, 3) + '-' + digits.slice(3, 7) + '-' + digits.slice(7);
}
return phone; // 不明な形式はそのまま
}
formatPhoneNumber('0312345678') // → "03-1234-5678"
formatPhoneNumber('09012345678') // → "090-1234-5678"
// "1234567"(7桁)→ "123-4567" に変換
function formatPostalCode(zip) {
const digits = zip.replace(/\D/g, '');
if (digits.length === 7) {
return digits.slice(0, 3) + '-' + digits.slice(3);
}
return zip;
}
formatPostalCode('1234567') // → "123-4567"
08 COMBINATIONS at()・split()・正規表現との組み合わせ 文字列処理をより強力にする関連メソッドとの使い分け
8-1. at():インデックスで1文字取得(-1で最後の文字)
String.prototype.at() は ES2022 で追加された比較的新しいメソッドです。str[-1] のように末尾から1文字を取得するために at(-1) が使えます(ただしサロゲートペアは非対応)。
const str = "Hello World"; // at(): インデックスで1文字取得(負のインデックスが使える) str.at(0) // → "H" str.at(-1) // → "d"(最後の文字) str.at(-2) // → "l"(後ろから2番目) // 配列アクセス(負のインデックスは使えない) str[0] // → "H" str[-1] // → undefined(JavaScriptではNG) // at() と slice(-1) の使い分け str.at(-1) // 最後の1文字だけ取りたいとき → at(-1) str.slice(-3) // 最後のN文字を取りたいとき → slice(-N)
📚 用語解説
String.prototype.at()メソッド:ES2022(ES13)で追加されたJavaScriptの文字列メソッド。str.at(n) でn番目の文字を返す。負のインデックス(at(-1)で最後の文字)が使える点がstr[n]との最大の違い。ただし内部的にはUTF-16コードユニット単位のため、サロゲートペア(絵文字等)は正しく扱えない。シンプルな1文字取得にはat()、複数文字の切り出しにはslice()を使う。
8-2. split() との組み合わせ:特定区切りで分割してから切り出す
// CSVの最初のカラムだけ取得
const csv = "田中,28,東京,エンジニア";
const fields = csv.split(',');
fields[0] // → "田中"
// URLのパス部分をスラッシュで分割して最後のセグメントを取得
const url = "https://example.com/blog/2026/article-title";
const path = url.slice(url.indexOf('/', 8)); // "/blog/2026/article-title"
const segments = path.split('/').filter(s => s !== ''); // ["blog","2026","article-title"]
segments[segments.length - 1] // → "article-title"(最後のセグメント)
// メールアドレスのドメイン部分を取得
const email = "user@example.com";
const atIndex = email.indexOf('@');
const domain = email.slice(atIndex + 1); // → "example.com"
const localPart = email.slice(0, atIndex); // → "user"
8-3. 正規表現のmatch()と組み合わせる
// HTMLタグを含む文字列からテキストだけ抽出(正規表現 + replace) const html = "Hello World
"; const textOnly = html.replace(/<[^>]+>/g, ''); // → "Hello World" // 文字列から数字部分だけ抽出してslice const mixed = "定価12,800円(税込)"; const numStr = mixed.match(/[\d,]+/)?.[0] || ''; // → "12,800" const numOnly = numStr.replace(',', ''); // → "12800" // 日付文字列から年・月・日を取り出す(slice vs 正規表現) const dateStr = "2026-07-19"; // slice での分割 const year = dateStr.slice(0, 4); // "2026" const month = dateStr.slice(5, 7); // "07" const day = dateStr.slice(8, 10); // "19" // 正規表現での分割(可読性重視) const [, y, m, d] = dateStr.match(/(\d{4})-(\d{2})-(\d{2})/) || [];
📚 用語解説
match()メソッド:文字列が正規表現に一致するかを調べ、一致した部分を配列で返すメソッド。グループキャプチャ(()で囲んだ部分)も別々の要素として返す。一致しない場合はnullを返すため、?.[0]のようなnull安全アクセスが必要。slice/substringと組み合わせると、動的なパターンマッチ後の切り出しが可能。
09 AI ASSIST Claude Codeで文字列処理コードを自動生成する 要件を自然言語で説明するだけで最適な切り出しコードが得られる
ここまでsubstr・substring・sliceの違い・Unicode対応・実務ユースケースまで網羅して解説しましたが、実際にコードを書く場面では「どのメソッドを使えばいいか、引数をどう書けばいいか」を毎回考えるのは時間のムダです。
Claude Codeに「こういう文字列処理を書きたい」と日本語で指示するだけで、slice・substring・split・正規表現を適切に組み合わせた実用的なコードがすぐに返ってきます。非推奨メソッドを使わない、Unicode対応も考慮した安全なコードを書いてもらえます。
| ユースケース | Claude Codeへの指示例 |
|---|---|
| URLからドメイン抽出 | 「JavaScriptでURLの文字列からホスト名(ドメイン部分)だけを抽出する関数を書いて。プロトコル(https://等)もパスも除いたもの。edge caseとしてhttp://もhttps://も対応して」 |
| テキスト切り捨て | 「JavaScriptでテキストを最大N文字に切り詰めて末尾に「…」をつける関数。日本語も正しく扱うこと。Nには「…」の3文字も含める」 |
| 非推奨コードの修正 | 「以下のJavaScriptコードのsubstr()をすべてslice()またはsubstring()に書き換えて。動作は変えないで。[コードを貼り付け]」 |
| 絵文字対応 | 「絵文字・サロゲートペアを含む日本語テキストを正しく指定文字数で切り出すJavaScript関数を書いて。Intl.Segmenterを使った版とスプレッド演算子版の両方」 |
「URLから拡張子を
抜き出す関数」
slice/substring/split
を適切に使った
コードが返る
コンソールで
動作確認
「edge caseを
追加して」等を
追加指示
10 CONCLUSION まとめ:substr・substring・sliceの選択基準 今後はslice()またはsubstring()を使い、substrは書かない
substr(start, len) → slice(start, start+len) で書き換えられるJavaScriptを含む業務システムのAI活用・自動化を進めたい方へ
文字列処理の細かな知識より、業務でJavaScriptを活用して何を自動化するかの方が重要です。
AI鬼管理では、フロントエンド・バックエンドを問わず業務システムのAI組み込み・自動化設計を支援しています。
NEXT STEP
この記事の内容を、あなたのビジネスで
実践してみませんか?
AI活用を自社で回せるようになりたい方へ
AI鬼管理
Claude Code・Cowork導入支援から業務設計・社内浸透まで実践ベースで伴走。「自社で回せる組織」を90日で作る経営者向けトレーニング。
よくある質問
Q. substrとsubstringの引数の一番分かりやすい覚え方は?
A. substr()の「r」は「長さ(range/length)」のイメージで、第2引数が「文字数」。substring()の「ing」は「〜から〜まで」のイメージで、第2引数が「終了インデックス」と覚えると混乱が減ります。もしくは「substring/sliceは第2引数が終了位置(同じ)、substrだけが文字数(違う)」とsubstrを例外として覚える方法もシンプルです。
Q. substr()はまだ全ブラウザで動きますか?削除されましたか?
A. 2026年7月現在、主要なブラウザ(Chrome・Firefox・Safari・Edge)とNode.jsでsubstr()はまだ動作します。ただし、MDN Web Docsの「deprecated」表示の通り、将来的に削除される可能性があり、積極的な使用は推奨されていません。既存のコードが動いているうちに、新規コードではslice()またはsubstring()に統一する準備を進めることが望ましいです。
Q. 日本語の文字数カウントにlengthを使って問題ないですか?
A. 一般的な日本語(ひらがな・カタカナ・よく使われる漢字)はUnicode BMP内にあるため、str.lengthで正しい文字数が返ります。ただし絵文字(😀等)やごく一部の漢字(𠮷の旧字など)はサロゲートペアのため、lengthで2つとしてカウントされます。絵文字を含む文字列の正確な文字数は[...str].lengthまたはArray.from(str).lengthで確認できます。
Q. slice()とsubstring()の使い分けの判断基準は何ですか?
A. 「末尾からの相対位置を使いたい場合はslice()、使わない場合はsubstring()でもよい」というのが基本の判断基準です。具体的には、末尾5文字を取りたいならslice(-5)、先頭3文字を除いた残りを取りたいならどちらでも書けます(slice(3)またはsubstring(3))。引数の順序が逆転するケース(例: 動的に計算したインデックスが偶然startより小さくなる可能性がある場合)はsliceの方が「空文字列を返して失敗を明示する」ため安全です。
Q. 文字列の一部を別の文字列に置き換えるには?
A. slice()で切り出した部分を組み合わせて置き換える方法と、replace()・replaceAll()メソッドを使う方法があります。特定位置の文字を置き換えたい場合: str.slice(0, i) + newChar + str.slice(i + 1)のようにsliceで前後を取り出して繋げます。文字列として出現する部分を置き換えたい場合: str.replace("old", "new")またはstr.replaceAll("old", "new")が簡潔です。
Q. Claude CodeにJavaScriptの文字列処理を書いてもらうとき、どんな指示が効果的ですか?
A. ①何の文字列から何を取り出したいか(例: 「メールアドレスからドメイン部分だけ」)、②入力例と期待する出力例を数個(例: 「"user@example.com" → "example.com"」)、③edge case(例: 「@が複数ある場合・@がない場合はどうする」)、④使ってほしくないメソッド(例: 「substrは使わないで」)の4点をセットで伝えると、一発で実用的なコードが返ってくる可能性が高くなります。
Claude Codeで業務自動化を90日で叩き込む
経営者向けの伴走型パーソナルトレーニング
Claude Code を業務に落とし込む
専門研修コース一覧
受講者本人の業務を題材に、「使いこなせる」状態になるまで伴走する研修プログラム。1対1特化型・ハンズオン・法人講座の3コースを展開中。業務特化・実装まで踏み込むタイプのClaude Code研修です。
研修コース一覧を見る →AI鬼管理へのお問い合わせ
この記事を読んで気になった方へ。
AI鬼管理の専門スタッフが、御社に最適な
業務自動化プランを無料でご提案します。




