JavaTips

Javaのsplitでドットが区切られない【正規表現が原因】

2019/12/23

ネットワークスピード
Java初心者
Javaのsplitで文字列を区切りたいけど、思った様に文字列が区切られない。。

 執筆者

たけ
大手SI企業の現役Javaエンジニアです。OCJ-Pの資格を保有しています。

Javaのsplitでドットが区切られない

splitでドット「.」を指定した場合、文字列が正しく区切られないのは「正規表現」が原因です。
※正規表現…文字列の集合を一つの文字列で表現する方法

正規表現の文字一覧

.   ^   $   [   ]   *   +   ?   |   (   )

splitは区切り対象の文字列が正規表現文字の場合、正規表現を用いて文字列の分割を行います。
ドット「.」は、正規表現で「任意の1文字」を表す特殊文字の為、単純に指定した場合、思惑通りに分割されません。

正しくはエスケープする必要がありまして、正規表現文字の場合、前方に「\\」を付与する必要があります。
試しにプログラムを見ていきましょう!

splitにドットを指定したプログラム

試しにIPアドレスを分割するプログラムを例題とします。

 間違ったプログラム例

 実行結果

 正しいプログラム

 実行結果

splitにパイプを指定したプログラム

こちらはフルーツを分割するプログラムを例題とします。

 間違ったプログラム例

 実行結果

 正しいプログラム

 実行結果

splitで標準入力の文字列は注意が必要

標準入力の値を使用する時は「next()」メソッドを使用しない方が良いです。

 推奨しないケース

以下の値を入力した場合、「10」のみ返却されます

入力値

10 20 30 40 50

「next()」メソッドは最初の半角スペースまでの文字を入力値として扱う為です。
入力値を半角スペースで区切る場合は「nextLine()」メソッドを利用しましょう

今回は以上になります。

たけ
Javaで挫折しそうだったり、悩んだ場合は気軽にお問い合わせから連絡下さい。良いプログラムが出来た!という報告も待ってます!


人気記事
クラウドコンピュータ
Javaでオススメの資格は「OCJ-P」です【実体験あり】

-JavaTips

Copyright© JavaSkillHacks , 2021 All Rights Reserved.