VBA100本ノック 16本目:無駄な改行を削除

こちらで公開されている、100本ノックに挑戦。
www.excel-ubara.com
素晴らしい教材を公開いただき、ありがとうございます。

上記リンク先から、問題文を転載。
f:id:Infoment:20220129195848p:plain

今回立てた作戦は、以下のとおり。

  1. 一つ以上連続する改行を、その塊毎に全てLfに置換する。
  2. 先頭にLfがあれば除去する。
  3. 末尾にLfがあれば除去する。

なお、改行の置換には正規表現を用いることとした。

Function VBA_100Knock_016(ByVal source_string As String) As String
    ' 正規表現。
    Dim myReg As Object
    Set myReg = CreateObject("VBScript.RegExp")
    ' 一回以上連続する改行でマッチ。
        myReg.Pattern = "\n+"
        myReg.Global = True
    Dim temp As String
        
    ' 一回以上連続する改行があれば、全て一つのLfに置換する。
        If myReg.Test(source_string) Then
            temp = myReg.Replace(source_string, vbLf)
        End If
        
    ' 先頭にLfがあれば除去する。
        If Left(temp, 1) = vbLf Then
            temp = Mid(temp, 2)
        End If
    
    ' 末尾にLfがあれば除去する。
        If Right(temp, 1) = vbLf Then
            temp = Left(temp, Len(temp) - 1)
        End If
        
        VBA_100Knock_016 = temp
End Function

作成しながら思った。これは、Trim(余分なスペースを除去する)関数の
「改行版」だと。実務でも、有効かもしれない。


解答を実行した結果がこちら。
f:id:Infoment:20220129203749g:plain

※冒頭リンク先の解答例および解説も、ぜひご一読ください。

参考まで。