【VBScript】文字列の真ん中にあるスペースだけを削除する


この記事はプロモーションを含みます。

VBScript

ホーム > VBScript 逆引きリファレンス

以前、文字列の前後にある半角・全角スペースを削除する方法を解説しました。
今回は、様々な位置にあるスペースのうち、真ん中にあるスペースだけを削除する方法を解説します。

はじめに

文字列の真ん中にあるスペースを削除するには、「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関数

・第1引数:スペースを削除する対象の文字列[TARGET_STR]
・第2引数:[TARGET_STR]の文字数 – [TARGET_STR]にLTrim関数で先頭の文字列を削除した文字数

Left関数と同様の考え方で、Right関数を使用して、文字列の後ろのスペースを取得し、変数[backSpace]に格納しています。

最後に、Replace関数で[TARGET_STR]から全てのスペースを削除し、その前後に先に取得したスペースを繋げることで、真ん中のスペースのみが削除された状態を作成しています。

記事は以上です。使用頻度はあまり高くは無さそうですが、参考にしてみて下さい。

コメント

タイトルとURLをコピーしました