stripメソッドで文字列の前後の全角空白を除去する

Scala 3.3.4
最終更新:2023年12月7日

[AD] Scalaアプリケーションの開発・保守は合同会社ミルクソフトにお任せください

この記事では、Scalaで文字列から前後の全角空白を除去する方法を解説します。

stripメソッドを使用して文字列の前後の全角空白を除去する

Java 11から、Stringstripメソッドが追加されました。

Java
public String strip()

stripメソッドを使用すると、全角空白を含む「空白」を除去することができます。

サンプルとしてこちらの文字列に対して空白文字の除去処理を行ってみましょう。

val title = "    Scala逆引き解説 Scalapedia     "

stripメソッドを使用した例は以下のようになります。

println("【" + title.strip + "】")

結果は以下のようになります。

【Scala逆引き解説 Scalapedia】

文字列の前後の空白がきれいに除去されていることがわかります。

Java 11 API Docs:java.lang.String#strip()

文字列の「前だけ」「後ろだけ」空白を除去する

実は、Java 11で追加されたのはstripメソッドだけではありません。

stripLeading あるいは stripTrailingというメソッドも追加されています。

それぞれ使い方を見てみましょう。

stripLeadingメソッドを使用して文字列の前側の全角空白を除去する

stripLeadingメソッドを使用すると、文字列の前側の全角空白を除去することができます。

Java
public String stripLeading()

サンプルの文字列から前側だけ空白を除去してみましょう。

println("【" + title.stripLeading + "】")

結果は以下のようになります。

【Scala逆引き解説 Scalapedia     】

前側の空白が除去される一方で、後ろ側の空白はそのまま残されていることがわかります。

stripTrailingメソッドを使用して文字列の後ろ側の全角空白を除去する

stripTrailingメソッドを使用すると、文字列の後ろ側の全角空白を除去することができます。

Java
public String stripTrailing()

今度はサンプルの文字列から後ろ側だけ空白を除去してみましょう。

println("【" + title.stripTrailing + "】")

結果は以下のようになります。

【    Scala逆引き解説 Scalapedia】

前側の空白がそのまま残されている一方で、後ろ側の空白が除去されていることがわかります。

半角空白のみ除去したい場合はtrimメソッドを使う

trimメソッドは文字列の前後の半角空白を除去するメソッドです。

先ほどの文字列にtrimメソッドを使用してみましょう。

val title = "    Scala逆引き解説 Scalapedia     "
println("【" + title.trim + "】")

結果は以下のようになります。

【    Scala逆引き解説 Scalapedia    】

空白が残ってしまっていますね。

実は、文字列の前後の空白には半角空白だけでなく全角空白が混ざっていたため、このような結果となりました。

除去するのは半角空白のみでよく、全角空白を除去する必要がない場合には、java.lang.String#trim()メソッドを使用することができます。

前後の空白が実際にどのような文字なのかによって、メソッドを使い分ける必要があることに注意してください。

trimメソッドについては、以下の記事でさらに詳しく解説しています。

Java 11 API Docs:java.lang.String#trim()

Javaにおける「空白」"white space"とは、特定の空白文字の総称

さてこれらのメソッドは「空白」を除去してくれます。

鈎括弧が意味深ですね。

実は、Javaの「空白」"white space"には明確な意味があります。
Javaの「空白」"white space"とは、「Character#isWhitespaceを実行するとtrueを返す文字」を指します。

Character#isWhitespaceを実行するとtrueを返すのは、具体的には以下の文字です。

日本語名カテゴリ名称Unicode expression
スペース(半角空白)Space (Zs)SPACEU+0020
Space (Zs)OGHAM SPACE MARKU+1680
Space (Zs)EN QUADU+2000
Space (Zs)EM QUADU+2001
Space (Zs)EN SPACEU+2002
Space (Zs)EM SPACEU+2003
Space (Zs)THREE-PER-EM SPACEU+2004
Space (Zs)FOUR-PER-EM SPACEU+2005
Space (Zs)SIX-PER-EM SPACEU+2006
Space (Zs)PUNCTUATION SPACEU+2008
Space (Zs)THIN SPACEU+2009
Space (Zs)HAIR SPACEU+200A
Space (Zs)MEDIUM MATHEMATICAL SPACEU+205F
全角空白Space (Zs)IDEOGRAPHIC SPACEU+3000
Line (Zl)LINE_SEPARATORU+2028
Paragraph (Zp)PARAGRAPH_SEPARATORU+2029

さらに以下の文字も「空白」に含まれます。

日本語名名称inJavaUnicode expression
水平タブHORIZONTAL TABULATION\tU+0009
改行LINE FEED\nU+000A
垂直タブVERTICAL TABULATION U+000B
フォーム・フィードFORM FEED\fU+000C
復帰CARRIAGE RETURN\rU+000D
ファイル区切り文字FILE SEPARATOR U+001C
グループ区切り文字GROUP SEPARATOR U+001D
レコード区切り文字RECORD SEPARATOR U+001E
単位区切り文字UNIT SEPARATOR U+001F

以下の文字は空白に含まれません。

  • 改行なしの空白

以上です。

この一覧の中に全角空白が含まれているので、全角空白を除去するためにstripメソッドを使うことができるというわけです。

このことについて、詳しくは以下を参照してください。

サイト内検索


カテゴリ「文字列処理」の記事

文字列をエスケープしたり復元したりする方法(Apache Commons Text) JavaとScalaのString/StringBuilder/StringBuffer使い分け事情 文字列を分割する方法(split・splitAt・linesIterator・linesWithSeparatorsメソッド) trimメソッドで文字列の前後の空白を除去する 文字列が一致するか比較する方法/大文字・小文字を区別せずに比較する方法 特定の文字の文字コード(コード・ポイント)を取得する replaceメソッドなど、文字列を置換する方法を紹介 文字列の先頭や末尾を、取得したり切り落としたりする方法 containsメソッドでStringに特定の文字列が含まれるか調べる方法 数値を文字列に変換する方法 stripメソッドで文字列の前後の全角空白を除去する 文字列を数値に変換するには?to○○メソッドと注意点について 文字列を辞書的に比較する方法/大文字・小文字を区別せずに比較する方法 文字列が特定の文字列で始まるか・終わるかを調べる方法 【getBytes&size】文字列のバイト長を取得する方法 substringでStringを切り取り、部分文字列を抽出する方法 StringOpsとWrappedStringの違いは? 文字列を連結するには?+演算子やString interpolationの使い方 文字列の大文字へ・小文字へ変換する方法 文字列を逆順にする方法 文字列の文字コード(文字セット)を変換する方法 文字列の長さを取得する方法:lengthとcodePointCountの使い分け 文字列をURLエンコード・デコードする方法 文字列が正規表現に合致するか調べる方法 この文字の位置はどこ?文字列のインデックスを取得する方法 文字列をバイト列に、またはバイト列を文字列に変換する方法

カテゴリ「文字列処理」の記事

文字列をエスケープしたり復元したりする方法(Apache Commons Text) JavaとScalaのString/StringBuilder/StringBuffer使い分け事情 文字列を分割する方法(split・splitAt・linesIterator・linesWithSeparatorsメソッド) trimメソッドで文字列の前後の空白を除去する 文字列が一致するか比較する方法/大文字・小文字を区別せずに比較する方法 特定の文字の文字コード(コード・ポイント)を取得する replaceメソッドなど、文字列を置換する方法を紹介 文字列の先頭や末尾を、取得したり切り落としたりする方法 containsメソッドでStringに特定の文字列が含まれるか調べる方法 数値を文字列に変換する方法 stripメソッドで文字列の前後の全角空白を除去する 文字列を数値に変換するには?to○○メソッドと注意点について 文字列を辞書的に比較する方法/大文字・小文字を区別せずに比較する方法 文字列が特定の文字列で始まるか・終わるかを調べる方法 【getBytes&size】文字列のバイト長を取得する方法 substringでStringを切り取り、部分文字列を抽出する方法 StringOpsとWrappedStringの違いは? 文字列を連結するには?+演算子やString interpolationの使い方 文字列の大文字へ・小文字へ変換する方法 文字列を逆順にする方法 文字列の文字コード(文字セット)を変換する方法 文字列の長さを取得する方法:lengthとcodePointCountの使い分け 文字列をURLエンコード・デコードする方法 文字列が正規表現に合致するか調べる方法 この文字の位置はどこ?文字列のインデックスを取得する方法 文字列をバイト列に、またはバイト列を文字列に変換する方法