文字列から余分な空白を除外するには

◆PROCESSING 逆引きリファレンス

 カテゴリー:文字関連処理

文字列から余分な空白を除外するには

【解説】

文字列を扱っていると、文字列の前後にある空白(SPACE文字など)を取り除きたくなる場合があります。

PROCESSINGには、文字列の前後にある空白(を含む制御文字)を取り除くのに便利な trim() 命令があります。

【構文】

String       s  =  trim( str );
String[]  as  =  trim( array );

【パラメータ】

String  str : 制御文字を取り除きたい文字列
String[] array  :制御文字を取り除きたい文字列配列

【戻り値】

String  s : 制御文字を取り除いた後の文字列
String[]  as :制御文字を取り除いた後の文字列配列

【注意】

trim() は、引数で与えられた文字列の最初と最後にある空白文字を除去します。除去されるのはスペースだけではありません。文字列の前後に含まれるリターン、タブのような制御文字も除去されます。

具体的には、ASCⅡコードのうち 0x00(null文字) ~ 0x20(半角SPACE) までの制御文字が取り除かれます。

ただし、試した限りでは 0x7f(DEL)は、(見かけ上は空白文字ですが)何故か取り除かれませんでした。

なお、全角スペース、および文字列の途中に含まれる制御文字は除去されません。例えば ”_あいう_えお_” ( _は半角SPACE) の場合、trim() の結果は ”あいう_えお” になります。

文字列の前後にある全角スペース文字も除去したい場合は、自分で頑張るしかないようです。サンプルを掲載しましたので、参考としてください。

【関連記事】

  • 第4章:得点を表示する(その4)

サンプルプログラム

前後の空白文字を除去する例:

ループを回して、ASCⅡコード(0x00 から 0x7f まで)を文字列にし、trim() をかけています。
本例では、文字列の先頭に含まれる  0x00(null文字) ~ 0x20(半角SPACE) までの制御文字が取り除かれる事になります。

<出力サンプル>
trimサンプル1

 

前後の空白文字を除去する例2:

文字列配列に格納された各文字列から、制御文字を除去する例です。

<出力サンプル>
trimサンプル3

 

全角スペースも除去する例:

元の文字は
全_ab<TAB>c全d_g<TAB>全
です。

<TAB>と書かれた部分がタブ文字(\t)です。_は半角SPACE、全は全角SPACEです。

文字列の前後が全角SPACEで挟まれているため、単純に trim()  しても、1つも制御文字は取り除かれません。

この文字列(src)から1文字づつ取り出して、全角SPACEだった場合は除去していきます。ただし、単純に文字列の前後にある全角SPACEだけを除去すると
_ab<TAB>c全d_g<TAB>
となってしまいます。

そこで上記のサンプルでは、文字列の前後にある全角SPACEと制御文字は全て除去するように工夫をしています。

<出力サンプル>
trimサンプル2

 


PROCESSING逆引きリファレンス一覧 へ戻る

本ページで利用しているアイコン画像は、下記サイト様より拝借しております。各画像の著作権は、それぞれのサイト様および作者にあります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)