VBA100本ノック 16本目:無駄な改行を削除
こちらで公開されている、100本ノックに挑戦。
www.excel-ubara.com
素晴らしい教材を公開いただき、ありがとうございます。
上記リンク先から、問題文を転載。
今回立てた作戦は、以下のとおり。
- 一つ以上連続する改行を、その塊毎に全てLfに置換する。
- 先頭にLfがあれば除去する。
- 末尾に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(余分なスペースを除去する)関数の
「改行版」だと。実務でも、有効かもしれない。
解答を実行した結果がこちら。
※冒頭リンク先の解答例および解説も、ぜひご一読ください。
参考まで。