{"id":80066,"date":"2024-03-29T07:15:26","date_gmt":"2024-03-28T22:15:26","guid":{"rendered":"https://freelance.indieverse.co.jp/media/?p=80066"},"modified":"2025-11-01T16:34:36","modified_gmt":"2025-11-01T07:34:36","slug":"ruby-split","status":"publish","type":"post","link":"https://freelance.indieverse.co.jp/media/programming/ruby/ruby-split","title":{"rendered":"【Ruby】splitで文字列を分割する方法を解説"},"content":{"rendered":"<ul>\n<li>splitメソッドの基本的な使い方</li>\n<li>様々なパターンでの分割方法</li>\n<li>splitメソッドの応用例</li>\n</ul>\n<p>について解説していきたいと思います。</p>\n\n\t<div class='balloon5'>\n\t\t<div class='faceicon'>\n\t\t\t<img src='https://pbs.twimg.com/profile_images/1230103371664613376/PHLMWlPU_400x400.jpg'>\n\t\t\t<div style='text-align:center'>DAI</div>\n\t\t</div>\n\t\t<div class='chatting'>\n\t\t\t<div class='says'><strong>splitは文字列を配列にするメソッド</strong>です。個人的には文字列からCSVファイルを作成する場合や、改行区切りのテキストを配列に変更したりするケースでよく使います。利用頻度もかなり高いので、ぜひ覚えてみてください。</div>\n\t\t</div>\n\t</div>\n\t\n<h2>splitメソッドの基礎知識</h2>\n<p>Rubyにおいて、文字列を手軽に配列に変換する方法の一つが<code>split</code>メソッドです。</p>\n<p>このメソッドは、指定されたパターンや文字で文字列を分割し、その結果を配列として返します。</p>\n<p>最も単純な形の<code>split</code>メソッドの使用例は以下の通りです：</p>\n<p><code></code></p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-ruby\" data-lang=\"Ruby\"><code>sentence = \"This is a sample string\"\r\nwords = sentence.split\r\np words</code></pre>\n</div>\n<p>&nbsp;</p>\n<p>実行結果:</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-ruby\" data-lang=\"Ruby\"><code>[\"This\", \"is\", \"a\", \"sample\", \"string\"]</code></pre>\n</div>\n<p>&nbsp;</p>\n<p>この例では、<code>split</code>メソッドは引数を与えずに使用されています。</p>\n<p><strong>デフォルトでは、空白文字（スペース、タブ、改行など）で文字列を分割します。</strong></p>\n<p>結果として、単語ごとに分割された配列が得られます。</p>\n<p>Rubyでは、<code>split</code>メソッドを使って、さまざまな方法で文字列を配列に変換できます。ここではその方法についていくつか紹介します。</p>\n<h2>デフォルトで分割する</h2>\n<p><code>split</code>メソッドを引数なしで使用すると、<strong>デフォルトで空白文字（スペース、タブ、改行）を分割基準とします。</strong>これにより、文中の各単語を素早く配列に格納することが可能です。</p>\n<p><code></code></p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-ruby\" data-lang=\"Ruby\"><code>text = \"Ruby programming is fun\"\r\narray = text.split\r\np array</code></pre>\n</div>\n<p>&nbsp;</p>\n<p>実行結果:</p>\n<p><code></code></p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-ruby\" data-lang=\"Ruby\"><code>[\"Ruby\", \"programming\", \"is\", \"fun\"]</code></pre>\n</div>\n<p>&nbsp;</p>\n<p>この方法は、文章から単語を簡単に分けたい時に役立ちます。</p>\n<h3>特定の区切り文字で分割する</h3>\n<p>区切り文字を指定して文字列を分割することもできます。</p>\n<p>例えば、カンマ <code>,</code> が区切り文字の場合は、以下のようにsplit関数の引数に追加します。</p>\n<p><code></code></p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-ruby\" data-lang=\"Ruby\"><code>data = \"apple,banana,cherry\"\r\nfruits = data.split(\",\")\r\np fruits</code></pre>\n</div>\n<p>実行結果:</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-ruby\" data-lang=\"Ruby\"><code>[\"apple\", \"banana\", \"cherry\"]</code></pre>\n</div>\n<p>この方法はCSV形式のデータを扱う場合などに便利です。</p>\n<h3>正規表現を用いた分割</h3>\n<p>区切り文字が一定しない、複雑なパターンの場合は正規表現を使って分割することができます。</p>\n<p>例えば、スペースまたはカンマで分割したい場合は以下のようにします。</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-ruby\" data-lang=\"Ruby\"><code>sentence = \"Ruby,split method is very useful\"\r\nwords = sentence.split(/,\\s|\\s/)\r\np words</code></pre>\n</div>\n<p>実行結果:</p>\n<p><code></code></p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-ruby\" data-lang=\"Ruby\"><code>[\"Ruby\", \"split\", \"method\", \"is\", \"very\", \"useful\"]</code></pre>\n</div>\n<p>&nbsp;</p>\n<p>この例では、カンマの後にスペースがあるか、スペースのいずれかで分割しています。正規表現を用いることで、より柔軟な分割が可能になります。</p>\n<p>正規表現については、こちらのURLをご確認ください。</p>\n<a href=\"https://freelance.indieverse.co.jp/media/programming/ruby/ruby-regular-expression\" target=\"_blank\" class=\"related-article-container\">\n\t\t\t\t\t<span class=\"related-article__label\">合わせて読みたい</span>\n\t\t\t\t\t<div class=\"related-article__image\" style=\"background-image:url(https://freelance.indieverse.co.jp/media/wp-content/uploads/2022/11/code-g7e399f5d0_1280-150x150.jpg)\"></div>\n\t\t\t\t\t<div class=\"related-article__content\">\n\t\t\t\t\t\t<div class=\"related-article__title\">【Ruby】正規表現完全マニュアル | 置換, 抽出, メタ文字の利用などを解説</div>\n\t\t\t\t\t\t<div class=\"related-article__description\">Rubyの正規表現を基礎から実践まで網羅。検索・抽出・置換・分割、メタ文字や量指...</div>\n\t\t\t\t\t</div>\n\t\t\t\t</a>\n<h3>文字単位での分割技法</h3>\n<p>場合によっては、文字列を一文字ずつ分割したいこともあります。</p>\n<p>そのような場合は、<strong>空文字列</strong>を引数として渡します。</p>\n<p><code></code></p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-ruby\" data-lang=\"Ruby\"><code>word = \"Ruby\"\r\nchars = word.split(\"\")\r\np chars</code></pre>\n</div>\n<p>&nbsp;</p>\n<p>実行結果:</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-ruby\" data-lang=\"Ruby\"><code>[\"R\", \"u\", \"b\", \"y\"]</code></pre>\n</div>\n<p>&nbsp;</p>\n<p>文字列を文字の配列に変換するときに使うと便利なテクニックです。</p>\n<h2>分割回数の限界設定</h2>\n<p>Rubyの<code>split</code>メソッドでは、分割回数も制御できます。</p>\n<p>これは、分割を行なう最大回数を制限するために使われます。指定された回数まで分割が行われたら、残りの部分は一つの要素として配列に追加されます。</p>\n<p>分割回数を指定するには、<code>split</code>メソッドの第二引数に数字を渡します。これにより、分割の限界を設定することが可能です。例えば、スペースで区切られた文字列を最初の2つの空白のみで分割したい場合は以下のようにします。</p>\n<p><code></code></p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-ruby\" data-lang=\"Ruby\"><code>text = \"This is a split method example\"\r\nlimit_array = text.split(\" \", 3)\r\np limit_array</code></pre>\n</div>\n<p>&nbsp;</p>\n<p>実行結果:</p>\n<p><code></code></p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-ruby\" data-lang=\"Ruby\"><code>[\"This\", \"is\", \"a split method example\"]</code></pre>\n</div>\n<p>&nbsp;</p>\n<p>この例で、<code>split</code>メソッドに<code>3</code>を渡しています。これは、最大で2回分割を行い（したがって3つの要素に）、それ以降のテキストを全て3つ目の要素として残すことを意味します。</p>\n<p>この機能は、大量のデータを扱う際に、最初の数個のデータポイントのみ必要とする場合などに便利です。また、特定のフォーマットのデータから先頭部分のみを素早く抽出したい場合にも活用できます。</p>\n<h2>splitメソッドの実用例</h2>\n<p><code>split</code>メソッドの応用例としては、ログファイルやCSVデータのパースがあります。ログファイルから特定の部分文字列を抽出したい場合や、CSV形式のデータから特定の列を取り出したい場合に、<code>split</code>メソッドは非常に有効です。</p>\n<p>例えば、単純なCSV形式のデータから各行の最初の列だけを取り出したい場合、以下のようなコードが考えられます。</p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-ruby\" data-lang=\"Ruby\"><code>csv_data = \"name,age,location\\nJohn,30,New York\\nSara,25,Los Angeles\"\r\nlines = csv_data.split(\"\\n\")\r\nnames = lines.map { |line| line.split(\",\", 2).first }\r\np names</code></pre>\n</div>\n<p>実行結果:</p>\n<p><code></code><code>[\"name\", \"John\", \"Sara\"]</code></p>\n<p>&nbsp;</p>\n<h2>参考文献</h2>\n<ul>\n<li><a href=\"https://docs.ruby-lang.org/ja/latest/method/String/i/split.html\">Ruby 3.3 リファレンスマニュアル  ライブラリ一覧  組み込みライブラリ  Stringクラス  split</a></li>\n</ul>\n","protected":false},"excerpt":{"rendered":"<p>Rubyのsplitメソッドで文字列を分割する基本から、区切り文字・正規表現・分割回数の指定、文字単位の分割、CSVやログの実用例までサンプル付きで解説します。初心者でもすぐ使える実践的な使い方を網羅します。</p>\n","protected":false},"author":105,"featured_media":80033,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[190],"tags":[286],"class_list":["post-80066","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ruby","tag-ruby"],"aioseo_notices":[],"meta_description":"Rubyのsplitメソッドで文字列を分割する基本から、区切り文字・正規表現・分割回数の指定、文字単位の分割、CSVやログの実用例までサンプル付きで解説します。初心者で...","_links":{"self":[{"href":"https://freelance.indieverse.co.jp/media/wp-json/wp/v2/posts/80066","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https://freelance.indieverse.co.jp/media/wp-json/wp/v2/posts"}],"about":[{"href":"https://freelance.indieverse.co.jp/media/wp-json/wp/v2/types/post"}],"author":[{"embeddable":true,"href":"https://freelance.indieverse.co.jp/media/wp-json/wp/v2/users/105"}],"replies":[{"embeddable":true,"href":"https://freelance.indieverse.co.jp/media/wp-json/wp/v2/comments?post=80066"}],"version-history":[{"count":5,"href":"https://freelance.indieverse.co.jp/media/wp-json/wp/v2/posts/80066/revisions"}],"predecessor-version":[{"id":93443,"href":"https://freelance.indieverse.co.jp/media/wp-json/wp/v2/posts/80066/revisions/93443"}],"wp:featuredmedia":[{"embeddable":true,"href":"https://freelance.indieverse.co.jp/media/wp-json/wp/v2/media/80033"}],"wp:attachment":[{"href":"https://freelance.indieverse.co.jp/media/wp-json/wp/v2/media?parent=80066"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https://freelance.indieverse.co.jp/media/wp-json/wp/v2/categories?post=80066"},{"taxonomy":"post_tag","embeddable":true,"href":"https://freelance.indieverse.co.jp/media/wp-json/wp/v2/tags?post=80066"}],"curies":[{"name":"wp","href":"https://api.w.org/{rel}","templated":true}]}}