以前、文字列の前後にある半角・全角スペースを削除する方法を解説しました。
今回は、様々な位置にあるスペースのうち、真ん中にあるスペースだけを削除する方法を解説します。
はじめに
文字列の真ん中にあるスペースを削除するには、「Replace」関数を使用することで対応可能です。
しかし、文字列の前後にもスペースがある場合に「Replace」を使用すると全てのスペースが削除されてしまいます。
今回は、文字列の前後にスペースがある場合でも、真ん中にあるスペースのみを削除する方法の解説になります。
文字列「" a b c "」を例にすると、 ・Replace関数:"abc" → 全てのスペースが削除される ・Trim関数:"a b c" → 文字列前後のスペースが削除される ・今回:" abc " → 文字列真ん中のスペースを削除
サンプルのソースコード
サンプルでは、「▲▲a▲b▲c▲」の真ん中のスペースを削除しています。
実行するとメッセージボックスで「▲▲abc▲」と表示されます
※「▲」は半角スペースです。
Option Explicit
' スペースを削除する文字列
Const TARGET_STR = " a b c "
Dim frontSpace, backSpace
' 文字列の前のスペースを取得
frontSpace = Left(TARGET_STR, Len(TARGET_STR) - Len(LTrim(TARGET_STR)))
' 文字列の後ろのスペースを取得
backSpace = Right(TARGET_STR, Len(TARGET_STR) - Len(RTrim(TARGET_STR)))
' 真ん中のスペースを削除した文字列を表示
MsgBox frontSpace & Replace(TARGET_STR, " ", "") & backSpace
本スクリプトの仕組みを解説します。
まず、Left関数を下記のように指定することで、文字列の前のスペースを取得し、変数[frontSpace]に格納しています。
Left関数と同様の考え方で、Right関数を使用して、文字列の後ろのスペースを取得し、変数[backSpace]に格納しています。
最後に、Replace関数で[TARGET_STR]から全てのスペースを削除し、その前後に先に取得したスペースを繋げることで、真ん中のスペースのみが削除された状態を作成しています。
記事は以上です。使用頻度はあまり高くは無さそうですが、参考にしてみて下さい。
リンク
コメント