徹底解説!JavaScriptにおける文字列操作:substr、slice、substringの違い
JavaScriptにおけるString.sliceとString.substringの違い
共通点
- どちらも文字列の一部を切り出すメソッドです。
- どちらも開始位置と終了位置を指定できます。
- 開始位置は文字列の先頭から数えたインデックスで指定します。
- 終了位置は省略可能です。省略すると、文字列の末尾まで切り出されます。
相違点
項目 | String.slice | String.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