String型の文字列を扱っているときに空白や改行に不満を覚えた経験のある方は沢山いると思います。
例えばデータベースに登録する際にも姓と名の間に空白が合った場合、これをどう扱うかで悩んだり。
今回はそんな悩みを解消すべく、”trim”について解説してみたいと思います。
空白や改行コード、タブなどにお悩みの初心者の方は是非ともこの記事を読んでください!
“trim”の基本
“trim”の基本は何と言っても空白除去でしょう。
java.lang.Stringクラスの”trim”メソッドを使えば、文字列の先頭と末尾にある連続した空白と制御文字を全て削除することが出来ます。
まずは次のコードを見てみましょう。
package sample; public class TrimSample { public static void main(String[] args) { String str = " sample "; System.out.println("削除前 = \"" + str + "\""); System.out.println("削除後 = \"" + str.trim() + "\""); } }
実行結果
削除前 = " sample " 削除後 = "sample"
“trim”を使うとこのように文字列からスペースが除去されているのが確認できます。
改行コードの除去
次は先ほどの文字列に改行コードを追加して同じように”trim”の挙動を確認してみましょう。
改行コードを除去する場合にも”trim”は有効です。
次のコードで確認してみましょう。
package sample; package sample; public class TrimSample { public static void main(String[] args) { String str = " sample \n\t"; System.out.println("削除前 = \"" + str + "\""); System.out.println("削除後 = \"" + str.trim() + "\""); } }
実行結果
削除前 = " sample " 削除後 = "sample"
実行結果を見てください。このように簡単に除去することが出来ました。
削除できない場合について
“trim”メソッドは空白除去を目的としたメソッドですが、”trim”では除去できないものもあります。
除去できないものについては以下の通りです。
- 全角スペース
- 文字列間の空白(「テスト 太郎」でいうと姓と名の間の空白)
これらを削除したい場合には別のメソッドを使う必要が有りますので注意してください。
実際にサンプルコードを見てみましょう。
package sample; public class TrimSample { public static void main(String[] args) { String str = " sample "; // 先頭は半角スペース、末尾は全角スペース System.out.println("削除前 = \"" + str + "\""); System.out.println("削除後 = \"" + str.trim() + "\""); } }
実行結果
削除前 = " sample " 削除後 = "sample "
このように末尾の全角スペースのみ”trim”では除去されていないことが確認できます。
replaceAllを使う方法
ava.lang.Stringクラスのメソッドには”trim”メソッドだけでなく”replaceAll”メソッドというものも用意されています。
先ほど除去できなかった全角スペースなどは、この”replaceAll”を使って除去することが出来ます。
“replaceAll”の記述ルールは以下の通りです。
public String replaceAll(String regex, String replacement);
“replaceAll”の第一引数には置き返したい対象の文字列を、第二引数には置き換えた後の文字列をそれぞれ記述します。
では早速実際にコードを見てみましょう。
package sample; public class TrimSample { public static void main(String[] args) { String str = " Hello World "; // 先頭は半角スペース、末尾は全角スペース System.out.println("削除前 = \"" + str + "\""); str = str.replaceAll(" ", ""); //全角スペースを空文字に置換 str = str.replaceAll(" ", ""); //半角スペースを空文字に変換 System.out.println("削除後 = \"" + str.trim() + "\""); } }
実行結果
削除前 = " Hello World " 削除後 = "HelloWorld"
置き換え前には文字列の間にも半角スペースがありますが、replaceAllを使って全角と半角のスペースを全て置き換えているため、ありとあらゆるスペースがなくなっていることが分かります。
シーンによって工夫が必要になることも
ここまでは”trim”と”replaceAll”について解説してきました。
しかし例えばフォームを作成した場合、一定のルールを設けていないと仮定すると、ユーザーは様々な型の入力をすることがあります。
例えば簡単に思い浮かぶものだけでも「サンプル太郎」「サンプル 太郎(全角スペース)」「サンプル 太郎(半角スペース)」の三つがありますよね?
これを統一してデータベースに登録させるために全てをユーザーにお願いは出来ません。
このような場合にはどうすれば良いのでしょうか?
色々考えられる方法はありますが最も簡単な方法は、まずフォーム内に”姓”と”名”の入力欄を分けて作り、それをプログラム側で結合させます。
この時に結合させる前の段階で”姓”と”名”に”replaceAll”を使用し、全てのスペースや改行のチェックをかけ、成形後に結合させます。
こうすることで、一定のルールをユーザーに気づかせないままこちら側で決めることができ、データベースに登録する際にも同じ形式で登録が可能となります。
このように、プログラム単体で全てを簡潔させようとせず一工夫加えることでユーザーをわずらわしさから解放出来ることを覚えておきましょう。
まとめ
いかがでしたか?
今回はava.lang.Stringクラスの二つのメソッド、”trim”と”replaceAll”について解説してみました。
実際にはプログラムを作る目的としてデータベースへの登録なども頻繁に発生しますので、この記事を基に”trim”と”replaceAll”を完璧に使いこなせるようにしておきましょう。