JavaScriptでsplitメソッドを使って空白で文字列を分割する10の方法

JavaScriptにおけるsplitメソッドを使った文字列の分割方法JS
この記事は約16分で読めます。

※本記事のコンテンツは、利用目的を問わずご活用いただけます。実務経験10000時間以上のエンジニアが監修しており、常に解説内容のわかりやすさや記事の品質に注力しておりますので、不具合・分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。(理解できない部分などの個別相談も無償で承っております)
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

●splitメソッドとは?

プログラミングスクールで基礎的な文法は一通り学んだ段階で、現在はJavaScriptを使ったWebアプリケーション開発に挑戦中かと思います。

そこで今回は、JavaScriptでの文字列操作、特にsplitメソッドの使い方について詳しく解説していきたいと思います。

サンプルコードを多く見ることで、実践的なスキルを身につけていただければと思います。

splitメソッドは、文字列を指定した区切り文字で分割し、その結果を配列として返すメソッドです。

文字列処理の基本として、JavaScriptへの理解を深めるためにも重要な知識となります。

○splitメソッドの基本的な使い方

それでは、splitメソッドの基本的な使い方について見ていきましょう。

splitメソッドは、次のような構文で使用します。

文字列.split(区切り文字)

ここで、区切り文字には、文字列を分割する際の区切りとなる文字を指定します。

例えば、カンマ(“,”)やスペース(” “)などを指定することができます。

splitメソッドを呼び出すと、区切り文字で分割された文字列が配列として返されます。

この配列を適切に処理することで、様々な文字列操作が可能となります。

○サンプルコード1:カンマで文字列を分割

早速、サンプルコードを見ながら理解を深めていきましょう。

まずは、カンマを区切り文字として文字列を分割する例です。

const str = "apple,banana,orange";
const fruits = str.split(",");
console.log(fruits);

実行結果

["apple", "banana", "orange"]

このコードでは、”apple,banana,orange”という文字列を、カンマ(“,”)で分割しています。

split(“,”)を呼び出すことで、文字列がカンマを境に分割され、[“apple”, “banana”, “orange”]という配列が返されます。

この配列を使えば、個々のフルーツの名前にアクセスすることができます。

例えば、fruits[0]は”apple”、fruits[1]は”banana”、fruits[2]は”orange”となります。

○サンプルコード2:スペースで文字列を分割

次に、スペースを区切り文字として文字列を分割する例を見てみましょう。

const str = "Hello World JavaScript";
const words = str.split(" ");
console.log(words);

実行結果

["Hello", "World", "JavaScript"]

この例では、”Hello World JavaScript”という文字列を、スペース(” “)で分割しています。

split(” “)を呼び出すことで、文字列がスペースを境に分割され、[“Hello”, “World”, “JavaScript”]という配列が返されます。

●正規表現を使ったsplitメソッド

基本的なsplitメソッドの使い方について理解が深まったところで、今度は正規表現を使った高度な文字列分割について見ていきましょう。

正規表現を使うことで、より柔軟で強力な文字列操作が可能になります。

正規表現とは、文字列のパターンを表現するための特殊な記法のことです。

正規表現を使うことで、特定の文字やパターンにマッチする部分を抽出したり、置換したりすることができます。

splitメソッドでは、区切り文字に正規表現を指定することで、より高度な文字列分割が可能になります。

それでは、サンプルコードを見ながら理解を深めていきましょう。

○サンプルコード3:正規表現で数字を抽出

まずは、文字列から数字だけを抽出する例を見てみましょう。

const str = "abc123def456ghi789";
const numbers = str.split(/[^0-9]+/);
console.log(numbers);

実行結果

["123", "456", "789"]

このコードでは、正規表現 /[^0-9]+/ を使って文字列を分割しています。

この正規表現は、数字以外の文字([^0-9])が1つ以上連続している部分(+)にマッチします。

つまり、数字以外の文字を区切り文字として扱い、数字だけを抽出することができます。

実行結果を見ると、[“123”, “456”, “789”] という配列が返されていることがわかります。

○サンプルコード4:正規表現で英字を抽出

次に、文字列から英字だけを抽出する例を見てみましょう。

const str = "abc123def456ghi789";
const letters = str.split(/[^a-zA-Z]+/);
console.log(letters);

実行結果

["abc", "def", "ghi"]

このコードでは、正規表現 /[^a-zA-Z]+/ を使って文字列を分割しています。

この正規表現は、英字以外の文字([^a-zA-Z])が1つ以上連続している部分(+)にマッチします。

つまり、英字以外の文字を区切り文字として扱い、英字だけを抽出することができます。

実行結果を見ると、[“abc”, “def”, “ghi”] という配列が返されていることがわかります。

○サンプルコード5:正規表現で記号を抽出

最後に、文字列から記号だけを抽出する例を見てみましょう。

const str = "abc!@#def$%^ghi&*()";
const symbols = str.split(/[^!@#$%^&*()]+/);
console.log(symbols);

実行結果

["!@#", "$%^", "&*()"]

このコードでは、正規表現 /[^!@#$%^&()]+/ を使って文字列を分割しています。

この正規表現は、指定した記号以外の文字([^!@#$%^&()])が1つ以上連続している部分(+)にマッチします。

つまり、指定した記号以外の文字を区切り文字として扱い、記号だけを抽出することができます。

実行結果を見ると、[“!@#”, “$%^”, “&*()”] という配列が返されていることがわかります。

●splitメソッドのオプション

正規表現を使ったsplitメソッドについて理解が深まったところで、今度はsplitメソッドのオプションについて見ていきましょう。

splitメソッドには、分割の方法を制御するためのオプションが用意されています。

これらのオプションを使いこなすことで、より細かな制御が可能になり、文字列処理の幅が広がります。

それでは、サンプルコードを見ながら、splitメソッドのオプションについて理解を深めていきましょう。

○サンプルコード6:最大分割数の指定

splitメソッドには、最大分割数を指定するオプションがあります。

この 数を指定することで、文字列を指定した数だけ分割することができます。

const str = "apple,banana,orange,grape";
const fruits = str.split(",", 3);
console.log(fruits);

実行結果

["apple", "banana", "orange"]

このコードでは、split(“,”, 3)のように、第2引数に最大分割数 を指定しています。

この場合、文字列を最大3つに分割します。

実行結果を見ると、[“apple”, “banana”, “orange”]という配列が返されていることがわかります。

“grape”は、最大分割数に達した後の部分なので、分割されずに 無視されています。

最大分割数を指定することで、必要な部分だけを取り出すことができます。

これは、大きなデータを扱う際に、一部 分だけを処理したい場合などに役立ちます。

○サンプルコード7:空の要素を削除

splitメソッドには、分割後の配列から空の要素を削除するオプションがあります。

このオプションを使うことで、不要な空の要素を取り除くことができます。

const str = "apple,,banana,,orange";
const fruits = str.split(",");
console.log(fruits);

const fruitsWithoutEmptyElements = str.split(",", -1);
console.log(fruitsWithoutEmptyElements);

実行結果

["apple", "", "banana", "", "orange"]
["apple", "banana", "orange"]

このコードでは、最初にstr.split(“,”)で文字列を分割しています。

実行結果を見ると、[“apple”, “”, “banana”, “”, “orange”]という配列が返されており、空の要素が含まれていることがわかります。

次に、str.split(“,”, -1)で文字列を分割しています。

第2引数に-1を指定すると、空の要素を削除するオプションが有効になります。

実行結果を見ると、[“apple”, “banana”, “orange”]という配列が返されており、空の要素が削除されていることがわかります。

空の要素を削除するオプションは、データのクリーニングや不要な要素の除去に役立ちます。

これで、配列のサイズを小さくし、メモリの節約にもつながります。

●splitメソッドの応用例

さて、ここまでsplitメソッドの基本的な使い方やオプションについて理解が深まったところで、実際の応用例を見ていきましょう。

splitメソッドは、文字列処理の様々な場面で活用することができます。

ここでは、単語のカウントや文字列の逆順、パスカルケースへの変換など、実務でも役立つ応用的なテクニックを紹介します。

サンプルコードを多く見ることで、splitメソッドの使い方への理解がさらに深まるでしょう。

それでは、早速応用例を見ていきましょう。

○サンプルコード8:単語のカウント

最初の応用例は、文章中の単語をカウントする方法です。

splitメソッドを使って文章を単語に分割し、分割された単語の数を数えることで、単語のカウントができます。

const sentence = "This is a sample sentence.";
const words = sentence.split(" ");
const wordCount = words.length;
console.log(`単語数: ${wordCount}`);

実行結果

単語数: 5

このコードでは、sentence.split(” “)で文章をスペースで分割し、単語の配列wordsを得ています。

そして、words.lengthで配列の要素数を取得することで、単語数をカウントしています。

実行結果を見ると、”This is a sample sentence.”という文章には5つの単語が含まれていることがわかります。

単語のカウントは、文章の統計情報を取得したり、特定の単語の出現頻度を調べたりする際に役立ちます。

splitメソッドを使えば、簡単に単語のカウントができますね。

○サンプルコード9:文字列の逆順

次の応用例は、文字列を逆順にする方法です。

splitメソッドで文字列を分割し、reverseメソッドで逆順にした後、joinメソッドで再び結合することで、文字列の逆順が得られます。

const str = "Hello, World!";
const reversedStr = str.split("").reverse().join("");
console.log(reversedStr);

実行結果

!dlroW ,olleH

このコードでは、str.split(“”)で文字列を1文字ずつに分割し、reverse()で分割された配列の要素を逆順にしています。

最後に、join(“”)で配列の要素を結合して、逆順になった文字列を得ています。

実行結果を見ると、”Hello, World!”という文字列が”!dlroW ,olleH”という逆順の文字列になっていることがわかります。

文字列の逆順は、回文チェックやデータの暗号化などに使われることがあります。

splitメソッドとreverseメソッド、joinメソッドを組み合わせることで、簡潔に文字列の逆順を得ることができます。

○サンプルコード10:パスカルケースへの変換

最後の応用例は、文字列をパスカルケースに変換する方法です。

パスカルケースとは、単語の先頭を大文字にし、単語を連結した記法のことです。

splitメソッドで単語に分割し、各単語の先頭を大文字にした後、joinメソッドで結合することで、パスカルケースへの変換ができます。

const str = "hello world";
const pascalCase = str.split(" ").map(word => word.charAt(0).toUpperCase() + word.slice(1)).join("");
console.log(pascalCase);

実行結果

HelloWorld

このコードでは、str.split(” “)で文字列をスペースで分割し、map()メソッドを使って各単語の先頭を大文字に変換しています。

word.charAt(0).toUpperCase()で単語の先頭文字を大文字にし、word.slice(1)で先頭以外の部分を取得しています。

最後に、join(“”)で単語を連結して、パスカルケースの文字列を得ています。

実行結果を見ると、”hello world”という文字列が”HelloWorld”というパスカルケースの文字列に変換されていることがわかります。

パスカルケースは、プログラミングにおける変数名や関数名の命名規則としてよく使われます。

splitメソッドとmapメソッド、joinメソッドを使えば、文字列をパスカルケースに変換することができます。

●よくあるエラーと対処法

splitメソッドを使いこなせるようになってきたところで、ここからは実際のプログラミングでよく遭遇するエラーと、その対処法について見ていきましょう。

エラーは誰にでも起こりうるものですが、原因を理解し、適切に対処できるようになることが重要です。

ここでは、文字列でないオブジェクトに対してsplitを使った場合や、正規表現のパターンが誤っている場合など、代表的なエラーとその対処法を紹介します。

エラーに直面した際に、冷静に対処できるようになりましょう。

○文字列でないオブジェクトに対してsplitを使った場合

まず、文字列でないオブジェクトに対してsplitメソッドを使った場合のエラーについて見ていきましょう。

const num = 123;
const result = num.split(",");
console.log(result);

実行結果

TypeError: num.split is not a function

このコードでは、数値型の変数numに対してsplitメソッドを呼び出そうとしています。

しかし、splitメソッドは文字列型のメソッドなので、数値型の変数に対して使うことはできません。

実行結果を見ると、”TypeError: num.split is not a function”というエラーが発生していることがわかります。

これは、numがsplitメソッドを持たないオブジェクトであることを示しています。

このようなエラーを防ぐには、splitメソッドを呼び出す前に、対象が文字列型であることを確認する必要があります。

typeof演算子を使って変数の型をチェックし、文字列型の場合にのみsplitメソッドを呼び出すようにしましょう。

const num = 123;
if (typeof num === "string") {
  const result = num.split(",");
  console.log(result);
} else {
  console.log("文字列ではありません。");
}

実行結果

文字列ではありません。

このように、typeof演算子で変数の型をチェックすることで、文字列でないオブジェクトに対するsplitメソッドの呼び出しを防ぐことができます。

○正規表現のパターンが誤っている場合

次に、正規表現のパターンが誤っている場合のエラーについて見ていきましょう。

const str = "apple,banana,orange";
const result = str.split(/,/g);
console.log(result);

実行結果

SyntaxError: Invalid regular expression: /,/g: Nothing to repeat

このコードでは、正規表現のパターンが誤っています。

/,/gのように、正規表現リテラルの後にgフラグを付けていますが、これは無効な正規表現です。

実行結果を見ると、”SyntaxError: Invalid regular expression: /,/g: Nothing to repeat”というエラーが発生していることがわかります。

これは、正規表現のパターンが無効であることを示しています。

正規表現を使う際は、パターンが正しく記述されているかどうかを十分に確認する必要があります。

正しい正規表現のパターンを使うようにしましょう。

const str = "apple,banana,orange";
const result = str.split(/,/);
console.log(result);

実行結果

["apple", "banana", "orange"]

このように、正しい正規表現のパターンを使うことで、期待通りの結果が得られます。

○分割後の配列の扱い方に注意

最後に、分割後の配列の扱い方に注意が必要なケースについて見ていきましょう。

const str = "apple,banana,orange";
const result = str.split(",");
console.log(result[3]);

実行結果

undefined

このコードでは、分割後の配列resultの4番目の要素(インデックス3)にアクセスしようとしています。

しかし、resultには3つの要素しかないため、インデックス3の要素は存在しません。

実行結果を見ると、undefinedが出力されています。

これは、存在しないインデックスにアクセスした場合の戻り値です。

分割後の配列を扱う際は、配列の長さを考慮し、存在するインデックスの範囲内でアクセスするように注意しましょう。

配列の長さはlengthプロパティで取得できます。

const str = "apple,banana,orange";
const result = str.split(",");
if (result.length > 3) {
  console.log(result[3]);
} else {
  console.log("インデックス3の要素は存在しません。");
}

実行結果

インデックス3の要素は存在しません。

このように、配列の長さをチェックすることで、存在しないインデックスへのアクセスを防ぐことができます。

まとめ

splitメソッドを使いこなせるようになることで、JavaScriptでの文字列処理に自信がつくはずです。

正規表現の知識を深めることで、さらに柔軟で効率的なコーディングができるようになるでしょう。

学んだ内容を活かして、質の高いWebアプリケーションを開発していきたいですね。

これからもJavaScriptの学習を楽しんで、スキルアップを目指していきましょう!