オンライン講座で、AWSの基本資格「AWS 認定ソリューションアーキテクトアソシエイト試験」に合格しよう!
お久しぶりです。ながれです。
今回は、Javaで文字列の先頭と末尾のスペースを除去する方法について。
Androidだと、EditTextで入力された文字列のスペースを削除したいシーンって結構あると思います。
私もそんなシーンに出くわしたのですが、一癖あったので今回取り上げてみました。
是非最後までご覧ください!
String.trim()では半角スペースしか除去できない
文字列の先頭・末尾の削除と聞いて一番最初に思いつくのは
String.trim()
だと思います。
確かに、スペースの除去はできます。
しかし、注意点として半角スペースの除去しか対応していません。
全角スペースは除去してくれないのです。
では、全角スペースも除去したい場合はどうしたら良いか?
Java11であれば、StringUtils.strip(String str, String stripChars)
Java11以降の場合は、String.strip(String str, String stripChars)が使えます。
第一引数str :対象の文字列
第二引数stripChars:除去したい文字
1 |
String mString = StringUtils.strip(str, " "); |
上記のように記述してやれば、全角スペースの除去も可能です。
しかし、Java11より前を使っている方も多いかと思われます。
私が少してこづったのは、ここです。
trim()じゃ半角スペースしか除去してくれないし、stripは使えないし…
そんな時に、次の方法を見つけました。
String.replaceFirstで正規表現にて除去する
String.replaceFirstは、文字列に対して指定したパターンに一致する最初の部分を他の文字で置き換えるメソッドです。
これを使用して、以下のように記載することで
文字列の先頭と末尾にある半角・全角スペースを除去できます。
1 |
String mString = str.replaceFirst("^[\\h]+", "").replaceFirst("[\\h]+$", ""); |
replaceFirst(“^[\\h]+”, “”)は先頭の半角・全角スペースを””に置換しています。
replaceFirst(“[\\h]+$”, “”)は末尾の半角・全角スペースを””に置換しています。
上記は、文字列の先頭や末尾に半角と全角スペースが交互に入り混じっていたとしても、すべて除去してくれます。
もちろん、文字列の文字と文字の間に入っているスペースは除去しないので、もし間のスペースも除去したい場合はString.replaceAllを使用してください。
おわりに
文字列の先頭と末尾のスペースを除去する方法を3つほど紹介しました。
結論としては、String.replaceFirst使っとけば間違いない、ということです。
このブログでは、他にもAndroid関連の記事やエンジニアとして覚えておいた方が良い用語など、様々なコンテンツがありますので是非色々と見てってくださいね。