文字列操作

JS

substring(indexStart, indexEnd)

substrig()は文字列の一部を抽出するために使います。

引数は2つ。

1つ目の引数は抽出を開始する位置(0から始まるインデックス)、

2つ目の引数は抽出を終了する位置(指定された位置の文字は含まない)

基本的な使い方

let str = "Hello, world!";
let result = str.substring(0, 5);
console.log(result); // "Hello"

indexEndを省略

indexEndを省略すると、指定した開始位置から文字列の末尾までを抽出します。

let str = "Hello, world!";
let result = str.substring(7);
console.log(result); // "world!"

負のインデックス

負のインデックスは0とみなされます。

let str = "Hello, world!";
let result = str.substring(-3, 5);
console.log(result); // "Hello"(負のインデックスは0とみなされる)

substring()の便利な使い方

特定の文字列以降を抽出

let str = "user@example.com";
let domain = str.substring(str.indexOf('@') + 1);
console.log(domain); // "example.com"

日付文字

let dateStr = "2024-05-27";
let year = dateStr.substring(0, 4);
let month = dateStr.substring(5, 7);
let day = dateStr.substring(8, 10);

console.log(year); // "2024"
console.log(month); // "05"
console.log(day); // "27"

苗字と名前を分けて抽出

let str = "John Doe";
let firstName = str.substring(0, str.indexOf(' '));
let lastName = str.substring(str.indexOf(' ') + 1);

console.log(firstName); // "John"
console.log(lastName); // "Doe"

ファイル拡張子の抽出

let fileName = "document.pdf";
let extension = fileName.substring(fileName.lastIndexOf('.') + 1);
console.log(extension); // "pdf"

slice(startIndex, endIndex)

slice()は負のインデックスをサポートしています。

また、substring()は文字列のみを扱いますが、

slice()は文字列に加えて配列の抽出も可能です。

slice()の配列の扱い方についてはこちら↓

1つ目の引数は抽出を開始する位置(0から始まるインデックス)、

2つ目の引数は抽出を終了する位置(指定された位置の文字は含まない)で、省略すると文字列の末尾まで抽出。

負のインデックス

負のインデックスは、末尾からの位置を指定します。

let str = "The quick brown fox jumps over the lazy dog";
let slicedStr = str.slice(-8); // 最後の8文字を抽出
console.log(slicedStr); // "lazy dog"

indexOf(searchValue, fromIndex)

  • searchValue : 検索する文字列や文字
  • fromIndex : 検索を開始する位置。省略すると、文字列の先頭から検索。

文字列が見つかる場合

let str = "Hello, world!";
let index = str.indexOf('world');
console.log(index); // 7 ("world"はインデックス7から始まります。)

文字列が見つからない場合

let str = "Hello, world!";
let index = str.indexOf('JavaScript');
console.log(index); // -1("JavaScript"は"Hello, world!"には含まれていないため、-1が返されます。)

検索開始位置を指定する場合

let str = "Hello, world!";
let index = str.indexOf('o', 5);
console.log(index); // 8(インデックス5から検索を開始すると、最初の'o'はインデックス8にあります。)

条件文での使用例

“world”が文字列内に存在するかどうかをチェックし、存在する場合にはメッセージを表示します。

let str = "Hello, world!";
if (str.indexOf('world') !== -1) {
  console.log('The word "world" is found in the string.');
} else {
  console.log('The word "world" is not found in the string.');
}

配列での使用例

“banana”が配列内に存在するかどうかをチェックします。

let fruits = ["apple", "banana", "mango"];
if (fruits.indexOf("banana") !== -1) {
  console.log("Banana is in the list.");
} else {
  console.log("Banana is not in the list.");
}

大文字と小文字を区別

let str = "Hello, world!";
let index = str.indexOf('World');
console.log(index); // -1 (大文字の'W'と小文字の'w'は異なる)

部分文字列の検索にはincludes()も使えます。

includes(valueToFind, fromIndex)

  • valueToFind : 検索する要素
  • fromIndex : 検索を開始する位置。省略すると、デフォルトは0です。負のインデックスは末尾からの位置を指す。

配列も扱えます。

let array = [1, 2, 3, 4, 5];

console.log(array.includes(3));     // true
console.log(array.includes(6));     // false

// 指定した位置から検索
console.log(array.includes(3, 3));  // false
console.log(array.includes(4, 3));  // true

// 負のインデックス
console.log(array.includes(2, -4)); // true
console.log(array.includes(2, -1)); // false

大文字と小文字を区別

includes()は大文字と小文字を区別します。

let str = "Hello, World!";
console.log(str.includes("world")); // false

厳密な等価性

includes()は厳密な等価性(===)を使用して要素を比較します。

let array = [1, '1', true, null];
console.log(array.includes(1));    // true
console.log(array.includes('1'));  // true
console.log(array.includes(true)); // true
console.log(array.includes(false));// false