'######################################################## '  GlobalTrim 2(WSH) '   TjSoft-44  2007.10.6  Taiju '  【説明】 '   「真魚」エディタにおいて、選択行の前後その他の '   空白文字(White Space)を削除する。 '   Trim関数の拡張版という位置づけである。 '   GetSelText, SetSelTextに当たるメソッドは、 '   「サクラエディタ」ではそれぞれ '   GetSelectedString(0), InsTextとなる。 '   Ver.2では、正規表現のパターンを改良し、 '   検索・置換処理のプロシージャを分離した。 '######################################################## sTargetString = Editor.GetSelText iSelectedMenu = LCase(InputBox("  1 空白文字" & vbCr & "   (全角・半角Space+TAB)" & vbCr & "  2 空白文字(全角Space以外)" & vbCr & "  3 改行" & vbCr & "  4 行頭の空白(LTrim+TAB)" & vbCr & "  5 行末の空白(RTrim+TAB)" & vbCr & "  6 行頭・行末の空白(Trim+TAB)" & vbCr & "  7 文字列中の空白文字" & vbCr & "   (行頭・行末を除く)","削除対象")) If iSelectedMenu = 1 Or iSelectedMenu = 3 Then If iSelectedMenu = 1 Then sSearchPtn = "[   ]" '[\s ]にすると改行も削除されてしまう。 ElseIf iSelectedMenu = 3 Then sSearchPtn = "\n" End If sReplaceStr = "" sTS = sTargetString sConStr = RegExp_Replace(sSearchPtn, sReplaceStr, sTS) ElseIf iSelectedMenu = 2 Or iSelectedMenu = 4 Or iSelectedMenu = 5 Or iSelectedMenu = 6 Then aryStr = Split(sTargetString, Chr(10)) For i = 0 To UBound(aryStr) If iSelectedMenu = 2 Then sSearchPtn = "\s" sReplaceStr = "" sTs = aryStr(i) ElseIf iSelectedMenu = 4 Then sSearchPtn = "^[\t  ]+" sReplaceStr = "" sTs = aryStr(i) ElseIf iSelectedMenu = 5 Then sSearchPtn = "[\t  ]+$" sReplaceStr = "" sTs = aryStr(i) ElseIf iSelectedMenu = 6 Then '\S(空白文字以外)を使うと、全角スペースを除外できないので[^\s ]+を使う。 sSearchPtn = "^[\s ]+(([^\s ]+[\s ]*)+[^\s ]+)[\s ]+$" sReplaceStr = "" & "$1" & "" sTs = aryStr(i) End If sConStr = sConStr & RegExp_Replace(sSearchPtn, sReplaceStr, sTS) & vbCr Next sTargetString = sConStr ElseIf iSelectedMenu = 7 Then aryStr = Split(sTargetString, Chr(10)) For i = 0 To UBound(aryStr) sSearchPtn = "(([^\s ]+[\s ]*)+[^\s ]+)" sTS = aryStr(i) sTempStr1 = RegExp_Find(sSearchPtn, sTS) sSearchPtn = "[\s ]+" sTS = sTempStr1 sReplaceStr = "" sTempStr2 = RegExp_Replace(sSearchPtn, sReplaceStr, sTS) sSearchPtn = "(^[\s ]+)(([^\s ]+[\s ]*)+[^\s ]+)([\s ]+$)" sTS = aryStr(i) sReplaceStr = "$1" & sTempStr2 & "$4" sConStr = sConStr & RegExp_Replace(sSearchPtn, sReplaceStr, sTS) & vbCr sTempStr1 = "" sTempStr2 = "" Next sTargetString = sConStr End If sTargetString = Editor.SetSelText(sConStr) Function RegExp_Find(sSearchPtn, sTS) Set objRegExp = New RegExp With objRegExp .Pattern = sSearchPtn .IgnoreCase = True .Global = True End With Set re = objRegExp.Execute(sTS) RegExp_Find = re(0) End Function Function RegExp_Replace(sSearchPtn, sReplaceStr, sTS) Set objRegExp = New RegExp With objRegExp .Pattern = sSearchPtn .IgnoreCase = True .Global = True End With RegExp_Replace = objRegExp.Replace(sTS, sReplaceStr) End Function