銀河鉄道

【VBA】先頭,末尾,両端の空白を削除する|Trim

サムネイル
[VBA]Trimwhitespace

半角スペース・全角スペース・タブ・改行を削除する|左か右か両端か

Public Function TrimWhiteSpace( _
        ByVal text As String, _
        Optional ByVal mode As String = "両" _
    ) As String

    Dim tmp As String
    tmp = text
    mode = UCase$(mode)

    ' 改行・タブは一時的に半角スペース化(Trimが認識できるように)
    tmp = Replace(tmp, vbCr, " ")
    tmp = Replace(tmp, vbLf, " ")
    tmp = Replace(tmp, vbTab, " ")

    Select Case mode
        Case "左" ' 左側削除
            tmp = LTrim(tmp)
            Do While Left$(tmp, 1) = " "
                tmp = Mid$(tmp, 2)
            Loop

        Case "右" ' 右側削除
            tmp = RTrim(tmp)
            Do While Right$(tmp, 1) = " "
                tmp = Left$(tmp, Len(tmp) - 1)
            Loop

        Case Else ' 両端削除(デフォルト "両")
            tmp = Trim(tmp)
            Do While Left$(tmp, 1) = " "
                tmp = Mid$(tmp, 2)
            Loop
            Do While Right$(tmp, 1) = " "
                tmp = Left$(tmp, Len(tmp) - 1)
            Loop
    End Select

    TrimWhiteSpace = tmp
End Function

  • Optional 引数で方向を指定: "左", "右", "両"(Left, Right, Both)
  • デフォルトは両端(""
  • OptionalUCase$()で大小文字を気にせずモード指定可能。
  • 標準の Trim/LTrim/RTrim で半角スペースを除去後、
     Do While で全角スペースを除去。
  • 正規表現を使わず高速・軽量。

使用例

呼び出し例説明戻り値
TrimSpace("  ABC  ")デフォルト(両端)"ABC"
TrimSpace(" ABC ", "左")左側のみ"ABC "
TrimSpace(" ABC ", "右")右側のみ" ABC"

Reference

| Whitespace|空白文字 |
| Optional Parameter|省略可能引数 |
| Full-width Space|全角スペース |
| Input Normalization|入力正規化 |
| Lightweight Function|軽量関数 |
| Mode Selector|モード選択引数 |

文字列をカットしたい場合

Trim whichever side you like
— the goal is always clarity.

同じ処理をPythonでも書いてみよう

著者

author
月うさぎ

編集後記:
この記事の内容がベストではないかもしれません。

記事一覧