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

2024-04-02

JavaScriptにおけるString.sliceとString.substringの違い

共通点

  • どちらも文字列の一部を切り出すメソッドです。
  • どちらも開始位置と終了位置を指定できます。
  • 開始位置は文字列の先頭から数えたインデックスで指定します。
  • 終了位置は省略可能です。省略すると、文字列の末尾まで切り出されます。

相違点

項目String.sliceString.substring
引数の解釈開始位置と終了位置は、文字列の長さに基づいて解釈されます。開始位置と終了位置は、文字列の長さに関係なく解釈されます。
負のインデックス開始位置と終了位置に負の値を指定できます。開始位置と終了位置に負の値を指定できません
サブ文字列の範囲開始位置から終了位置までのすべての文字を含みます。開始位置から終了位置までの文字を含みます。ただし、終了位置が開始位置よりも小さい場合は、空文字列("")が返されます。

const str = "Hello, world!";

// slice
console.log(str.slice(1, 5)); // "ello"
console.log(str.slice(-5)); // "world!"
console.log(str.slice(-10, -5)); // "world"

// substring
console.log(str.substring(1, 5)); // "ello"
console.log(str.substring(-5)); // "Error: Invalid substring range"
console.log(str.substring(-10, -5)); // ""
  • String.sliceは、開始位置と終了位置を文字列の長さに基づいて解釈するため、負のインデックスを指定することができます。
  • 終了位置が開始位置よりも小さい場合、String.sliceは開始位置から終了位置までのすべての文字を含むサブ文字列を返しますが、String.substringは**空文字列("")**を返します。

どちらのメソッドを使うべきかは、それぞれの挙動を理解した上で、目的に合わせて選択する必要があります。

補足

  • String.substrというメソッドも存在しますが、これはString.substringとほぼ同じ挙動をするため、あまり使われません。
  • これらのメソッドは、文字列だけでなく、配列やTypedArrayにも使用できます。



const str = "Hello, world!";

// slice
console.log(str.slice(1, 5)); // "ello"
console.log(str.slice(-5)); // "world!"
console.log(str.slice(-10, -5)); // "world"

// substring
console.log(str.substring(1, 5)); // "ello"
console.log(str.substring(-5)); // "Error: Invalid substring range"
console.log(str.substring(-10, -5)); // ""

説明

  • 1行目: 変数strに文字列 "Hello, world!" を代入します。
  • 3-5行目: String.sliceを使用して、文字列の一部を切り出します。
    • 3行目: 文字列の先頭から5文字目までの文字列を切り出します。

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

ello
world!
world
ello
Error: Invalid substring range
""



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

charAtとlength

charAtメソッドは、文字列の指定された位置にある文字を取得します。lengthプロパティは、文字列の長さを返します。これらの2つを組み合わせて、文字列の一部を切り出すことができます。

const str = "Hello, world!";

// 1文字目から5文字目までの文字列を切り出す
const substring = str.charAt(0) + str.charAt(1) + str.charAt(2) + str.charAt(3) + str.charAt(4);

console.log(substring); // "Hello"

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

const str = "Hello, world!";

// "," で分割
const arr = str.split(",");

console.log(arr[0]); // "Hello"

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

const str = "Hello, world!";

// "Hello" にマッチする部分文字列を切り出す
const substring = str.match(/Hello/)[0];

console.log(substring); // "Hello"

サードパーティライブラリ

Underscore.jsやLodashなどのサードパーティライブラリには、文字列操作用の便利な関数が提供されています。

// Underscore.jsを使用
const _ = require("underscore");

const str = "Hello, world!";

// 最初の5文字を取得
const substring = _.first(str, 5);

console.log(substring); // "Hello"
  • シンプルな方法で文字列の一部を切り出す場合は、String.sliceまたはString.substringを使うのがおすすめです。
  • より複雑な操作を行う場合は、正規表現やサードパーティライブラリを使うと便利です。

javascript substring slice


JavaScriptで空のオブジェクトを作成するその他の方法

オブジェクトリテラル({})を使用するnew Object()コンストラクタを使用するどちらの方法も有効ですが、それぞれ微妙な違いがあります。この方法では、空のオブジェクトリテラル {} を使用して空のオブジェクトを作成します。これは最も簡潔で分かりやすい方法です。...


SafariでもChromeでも安心!JavaScriptで画像の実際の幅と高さを取得する方法

この問題を解決するために、以下の3つの方法を紹介します:onloadイベントを使用する:この方法では、画像がロードされた後にonloadイベントが発生し、その中でwidthとheightプロパティにアクセスすることで、実際の幅と高さを取得できます。...


【保存版】JavaScriptでランダムな色を生成する7つの方法!目的別で使い分け

最もシンプルな方法は、Math. random() 関数を使って、0から255までのランダムな値を3つ生成し、RGB形式で色を表現する方法です。このコードを実行すると、毎回ランダムな色の値が生成されます。これを backgroundColor プロパティなどに設定することで、要素にランダムな色を適用することができます。...


Web SQL APIを使ってChromeでSQLiteデータベースにアクセスする

拡張機能を使うChromeウェブストアには、SQLiteデータベースを管理できる拡張機能がいくつかあります。代表的なものは以下の2つです。これらの拡張機能を使えば、ブラウザ上でSQLiteデータベースを開いたり、編集したり、クエリを実行したりすることができます。...


URLエンコードって何?Node.jsでURLエンコードを行うメリットとデメリット

encodeURIComponent()関数は、URLの一部として使用するために文字列をエンコードします。これは、特殊文字(スペース、疑問符、アンパサンドなど)をエンコードして、URLが正しく解釈されるようにするために使用されます。例:querystringモジュールは、URLのパラメータをエンコードしたりデコードしたりするための機能を提供します。...


SQL SQL SQL SQL Amazon で見る



【超便利】JavaScriptでカンマ区切り、ゼロパディング、桁数指定など、数値を思い通りに整形する方法

String. prototype. padStart()メソッドを使うpadStart()メソッドは、文字列を指定した長さまで左側へ空白で埋めてくれる便利なメソッドです。数字にゼロパディングを行う場合、以下の様に使用できます。この方法の利点は、シンプルで分かりやすいコードを書けることです。また、padStart()メソッドは、数字以外の文字列に対しても使用できます。


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

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


【超便利】JavaScriptで文字列の先頭を削除する5つの方法とサンプルコード

方法 1: slice() メソッドを使用するslice() メソッドは、文字列の一部を切り取るために使用されます。 この方法では、slice() メソッドに開始インデックスと終了インデックスを指定することで、先頭の文字を削除できます。 開始インデックスを 1 に設定すると、先頭の 1 文字が削除されます。