文字列切り出し徹底解説!substr vs substring vs slice

2024-04-10

JavaScriptのsubstrとsubstringの違い

引数の解釈

  • substr(start, length):

    • start: 切り出し開始位置を表すインデックス
    • length: 切り出す文字数

つまり、substringendインデックスを含む文字列を切り出し、substrlength文字分の文字列を切り出します。

例:

const str = "Hello, world!";

// substr: 5文字目から3文字分を切り出す
const substrResult = str.substr(5, 3); // "llo"

// substring: 5文字目から12文字目(12番目を含めない)を切り出す
const substringResult = str.substring(5, 12); // "world"

負のインデックス

  • substr:

    • 負のインデックスを指定すると、文字列末尾からの位置を表す
    • 例えば、str.substr(-3, 2)は末尾から3文字目から2文字分を切り出す
const str = "Hello, world!";

// substr: 末尾から3文字目から2文字分を切り出す
const substrResult = str.substr(-3, 2); // "ld"

// substring: 負のインデックスは無視され、先頭から3文字目から2文字分を切り出す
const substringResult = str.substring(-3, 2); // "el"

非推奨

    • ECMAScript 3で導入された古いメソッド
    • 今後廃止される可能性があり、代わりにsubstringを使うことを推奨
    • 多くのブラウザでsubstrよりも高速
  • 文字列を切り出すには、substringを使うのが一般的
  • 負のインデックスを使う場合は、substrsubstringの挙動が異なる
  • 将来性と互換性を考慮すると、substrではなくsubstringを使うべき



const str = "Hello, world!";

// substr: 5文字目から3文字分を切り出す
const substrResult = str.substr(5, 3);
console.log(substrResult); // "llo"

// substring: 5文字目から12文字目(12番目を含めない)を切り出す
const substringResult = str.substring(5, 12);
console.log(substringResult); // "world"

// 負のインデックス: 末尾から3文字目から2文字分を切り出す
const substrResult2 = str.substr(-3, 2);
console.log(substrResult2); // "ld"

// 負のインデックス: 負のインデックスは無視され、先頭から3文字目から2文字分を切り出す
const substringResult2 = str.substring(-3, 2);
console.log(substringResult2); // "el"

このコードを実行すると、以下の出力が得られます。

llo
world
ld
el

練習問題

以下のコードを実行し、出力を予想してください。

const str = "JavaScript, the world's most popular programming language!";

// 1. 10文字目から15文字目(15番目を含めない)を切り出す
const substringResult1 = str.substring(10, 15);

// 2. 末尾から5文字目から2文字分を切り出す
const substrResult2 = str.substr(-5, 2);

// 3. 10文字目から文字列末尾までを切り出す
const substringResult3 = str.substring(10);

console.log(substringResult1);
console.log(substrResult2);
console.log(substringResult3);



JavaScriptで文字列を切り出す他の方法

slice() メソッドは、substring と似ていますが、いくつかの点で違いがあります。

  • slice() は開始位置と終了位置を指定しますが、終了位置は包括されます。
  • slice() は負のインデックスも使用できます。
const str = "Hello, world!";

// slice: 5文字目から12文字目(12番目を含む)を切り出す
const sliceResult = str.slice(5, 12);
console.log(sliceResult); // "world!"

// slice: 末尾から3文字目から2文字分を切り出す
const sliceResult2 = str.slice(-3, -1);
console.log(sliceResult2); // "ld"

charAt() メソッドは、指定されたインデックスの文字を取得します。

const str = "Hello, world!";

// 5文字目の文字を取得
const charAtResult = str.charAt(5);
console.log(charAtResult); // "l"

split() メソッドは、文字列を指定された区切り文字で分割し、配列を返します。

const str = "Hello, world!";

// 空白文字で分割
const splitResult = str.split(" ");
console.log(splitResult); // ["Hello,", "world!"]

正規表現を使用して、文字列の一部を抽出することもできます。

const str = "Hello, world!";

// 数字を取得
const regexResult = str.match(/\d+/);
console.log(regexResult); // ["1"]

substrsubstring は、文字列を切り出すための最も基本的な方法です。

その他の方法は、それぞれ異なる利点と欠点があります。

使用する方法は、要件と状況によって異なります。


javascript substring


初心者でも分かるprototypeとthisを使いこなすための3つのポイント

オブジェクトのプロトタイプprototypeは、オブジェクトの設計図のようなものです。オブジェクトに共通するプロパティやメソッドを定義します。例:この例では、Personというコンストラクタ関数を定義し、nameプロパティとsayHelloメソッドをプロトタイプに定義しています。new演算子を使ってPerson関数を呼び出すと、新しいオブジェクトが作成され、プロトタイプからプロパティとメソッドが継承されます。...


「初心者向け」や「上級者も納得」

Setオブジェクトを使うJavaScriptには、重複なしの値を格納できるSetオブジェクトがあります。これは最もシンプルで効率的な方法の一つです。forEachとindexOfを使うこの方法は、ループを使って配列を繰り返し、indexOfを使って同じ値がすでに出現しているかどうかをチェックします。...


Reactドラッグライブラリ3選と、HTML5ドラッグ&ドロップAPIとの比較

HTML5のドラッグ&ドロップAPIを使うこれは最もシンプルな方法ですが、いくつかの制限があります。ドラッグとドロップのイベント処理が複雑になるモバイルデバイスでの動作が不安定になる可能性があるReactドラッグライブラリを使うReactドラッグライブラリを使うと、HTML5のドラッグ&ドロップAPIをより簡単に扱えるようになります。...


Angularで "Can't find Promise, Map, Set and Iterator" エラーを解決する

この問題は、いくつかの原因によって発生する可能性があります。原因TypeScript 設定: TypeScript バージョンが古い場合、これらのオブジェクトはデフォルトで含まれていない可能性があります。Polyfills: ブラウザがこれらのオブジェクトをネイティブにサポートしていない場合、polyfill を追加する必要があります。...


requestAnimationFrame を使って React コンポーネントを毎秒更新する

setInterval は、指定された間隔で関数を呼び出す関数です。この関数を使用して、コンポーネントの状態を更新し、再レンダリングを強制することができます。このコードでは、useState フックを使用して count という状態変数を初期化しています。 useEffect フックを使用して、setInterval 関数を呼び出し、1 秒ごとに count を更新しています。...


SQL SQL SQL SQL Amazon で見る



JavaScriptで文字列の一部をスマートに置換!replaceを超えたテクニック

そこで、今回は以下の2つの方法をご紹介します。文字列操作とconcatを使う方法この方法は、まず置換したいインデックスの前後を切り取り、次に置き換え後の文字列を結合することで実現します。正規表現を使う方法この方法は、正規表現を使って特定のインデックスの文字のみをマッチさせ、置換することで実現します。


徹底解説!JavaScriptにおける文字列操作:substr、slice、substringの違い

どちらも文字列の一部を切り出すメソッドです。どちらも開始位置と終了位置を指定できます。開始位置は文字列の先頭から数えたインデックスで指定します。終了位置は省略可能です。省略すると、文字列の末尾まで切り出されます。String. sliceは、開始位置と終了位置を文字列の長さに基づいて解釈するため、負のインデックスを指定することができます。