【Java入門】Stringクラスのsplitについて
  • facebookページ
  • twitterページ
  • 2017.09.09

    【Java入門】Stringクラスのsplitについて

    Stringクラスの仕組み

    Javaには、文字列を扱うStringクラスが存在します。Stringクラスには、多数のメソッドが存在します。

    Java プログラム内の “abc” などのリテラル文字列はすべて、このクラスのインスタンスとして実行されます。

    一番有名なメソッドはおそらく、文字列の比較に用いるequalsメソッドでしょう。しかし、Stringクラスはこれ以外にもたくさんの便利なメソッドを持っているのです。

    ここでは、その中で特にsplitメソッドについて説明していくことにします。

    splitメソッド

    splitとは、文字通り英語で、分割するという意味であり、その意味の通り、文字列を分割するためのメソッドです。仕様は以下の通りです。

    regexが、分割方法を現す正規表現です。

    正規表現は、通常の文字 (a ~ z など) と、メタキャラクタ と呼ばれる特殊文字から構成される文字列のパターンです。

    例えば、[a-zA-Z] という正規表現があると、これは大文字、小文字を含むすべてのアルファベットの文字位置文字と表します。

    もちろん、このような複雑な記号ではなく、単なる空白やコンマなどの特定の文字や記号をここに入れても構いません。

    事実、splitメソッドがよく使われるのが、スペースや、コンマなど、決められた記号で区切られたデータを文字列の中から取得するようなケースです。

    では、実際にサンプルを見てみることにしましょう。

    とすると、

    が得られます。

    データの分割

    ところで、splitには、この他に、オーバーロードされた、引数を2つとる記述方法が存在します。仕様は以下の通りです。

    と記述する方法があります。

    limitは分割回数を表します。戻り値としては、分割した文字列の配列が帰ってきます。

    つまり、指定した区切りで、文字列を分割するということを意味します。

    この引数はパターンの適用回数、つまり、返される配列の長さを制御しているのです。

    値がn(>0)であったとすると、このパターンは n – 1回以下の回数が適用され、配列の長さは n 以下になります。

    配列の最後のエントリには、最後にマッチした区切り文字以降の入力シーケンスがすべて含まれます。
    ただし、n が負の値の場合、このパターンの適用回数と配列の長さは制限されません。

    そして、n がゼロの場合、このパターンの適用回数と配列の長さは制限されません。ただし、後続の空の文字列は破棄されるというルールがあります。

    例えば、以下のような処理があったとします。

    となっている場合には、

    ですが、これを、

    とすると、

    といった具合になります。

    つまり、-1の場合、末尾の位置で空白だけが入る配列要素は格納されます。

    なお、splitでは、指定した正規表現が無効な場合、PatternSyntaxExceptionと言う例外が発生しますので、条件の指定には気をつけましょう。

    csvデータの読み込み

    このように、splitは、一つの文字列をパターンに応じて、複数の文字列に分割するわけですが、この処理は、何らかのファイルを読み取り、そのフォーマットにしたがってデータを読み取らなければならないようなケースには大変便利です。

    その一番典型的なケースがcsvフォーマットです。

    csvフォーマットとは

    csvフォーマットとは、テキスト形式のデータフォーマットの一種で、最も普及したデータ交換用フォーマットの一つです。

    csvとはComma-Separated Valuesの略で、カンマ区切りで並べた値という意味です。

    ただ、このフォーマットはいくつか方言があり、データ間を「,」ではなく半角スペースで区切ったようなケースも存在します。また、変わったところでは、(タブ)で区切る場合もあります。これを特にTSV(Tab-Separated Values)と呼ぶ場合もあります。

    しかし、ここではあくまでも一番典型的な,で区切る例を見てみることにしましょう。実際のCSVデータは、

    といった具合になります。また、データが数値のみの場合は、

    といった具合に、数値を,で区切るだけで十分です。

    CSVデータのつくり方

    こういったCSVデータは、コンマで区切られた単なる文字列などの羅列であることから、テキストエディタで簡単に作れますが、EXCELでも簡単に作成・編集をすることが出来ます。

    EXCELのセルにデータを入力し、保存形式でcsvファイルを形式すると、そのデータはcsvファイルで保存されます。

    また、逆に保存したcsvファイルをEXCELで読み出すことも可能です。

    JavaでCSVデータを読み込む

    以上を踏まえて、実際にJavaでCSVデータを読み込んで表示するプログラムを作ってみましょう。

    では、プログラムを解説していきましょう。

    まず、

    で、ファイルの読み込みの準備をしています。ここでは、”data.csv”というファイル名にしていますが、この部分は適切なパスとファイル名に変えてください。

    これをもとに、ファイルを一行ずつ読み込んでいきます。

    の部分で、一行ずつファイルを読み込んでいきます。読み込みが終了すると、nullが来るので、これはcsvファイルの最終行に車で繰り返されます。読み込んだ行の文字列は、変数sに代入されます。

    そして、

    で、sをコンマで複数に区切ります。

    例えば、読み込んだデータが、「1,2,3」であれば、

    という値が入った配列が生成されます。こうして生成されたデータを、最終的に拡張for文を用いて表示しています。

    このように、Stringクラスのsplitメソッドを使うと、簡単にcsvファイルの読み込みができるようになります。

    まとめ

    Stringクラスのsplitメソッドは、以上のように何らかのファイルフォーマットを読み込んでそこからデータを抽出したいという場合に非常に便利です。

    現在、もともとJavaはXMLファイルも、jsonファイルも読み出すことが出来るAPIが備わってはいますが、プログラミングの学習初期などに、練習として自分自身でこういったフォーマットを解釈し、ファイルを読み出すプログラムを作ってみることも良いでしょう。


    ポテパンが提供するサービスについて

    本メディア「ポテパンスタイル」を運営する株式会社ポテパンは、エンジニアキャリア領域で複数サービスを提供しています。

    ポテパンフリーランス

    ポテパンフリーランス

    フリーランスエンジニアの方に高単価案件をご紹介しております。弊社ではフリーランス案件を常時300件ほど保有しており、その中からあなたに適した案件をご案内いたします。また、これから独立してフリーランスになる方の無料個別相談も承っております。フリーランスになった後の案件獲得方法やお金面(税金や保険など)についてお答えいたします!

    ポテパンキャリア

    ポテパンキャリア

    エンジニア職専門の転職エージェントです。ポテパンキャリアでは、技術のわかるエージェントがあなたの転職をサポートします。エージェント自身がエンジニアなので、あなたと同じ目線で仕事内容や今後のキャリアについて一緒に考えることができます。

    ポテパンキャンプ

    ポテパンキャンプ

    ポテパンキャンプでは、RubyにてゼロからオリジナルのECサイトを作り上げてる3ヶ月間の実践型カリキュラムを提供しております。すでに本スクールの卒業生は、エンジニア職として様々な企業様に就職しております。なお、本スクールは受講料10万円と他社スクールに比べ格安となっており、またポテパンからご紹介させていただいた企業へ就職が決まった場合は、全額キャッシュバックいたします。



    株式会社ポテパンは、企業とエンジニアの最適なマッチングを追求しています。気になるサービスがあれば、ぜひ覗いてみてください!

    ポテキャンバナー ポテキャリバナー

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア

    話題の記事

    まだデータがありません。

    関連ワード

    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE