文字列内に含まれるタブを空白に変換する(ファンクション版)
Public Function TabToSpace(TabString As String, Optional TabSize As Long = 4) As String Dim CurrPos As Long, PrevPos As Long, FindPos As Long Dim SpcSize As Long, SubStr As String, Result As String CurrPos = 0 PrevPos = 0 FindPos = InStr(PrevPos + 1, TabString, vbTab) Do While FindPos > 0 SubStr = Mid(TabString, PrevPos + 1, FindPos - PrevPos - 1) Result = Result & SubStr CurrPos = CurrPos + LenB(StrConv(SubStr, vbFromUnicode)) SpcSize = TabSize - (CurrPos Mod TabSize) Result = Result & Space(SpcSize) CurrPos = CurrPos + SpcSize PrevPos = FindPos FindPos = InStr(PrevPos + 1, TabString, vbTab) Loop If PrevPos = 0 Then TabToSpace = TabString Else TabToSpace = Result & Mid(TabString, PrevPos + 1) End If End Function
文字列内に含まれるタブを空白に変換する(プロシージャ版)
Public Sub Tab2Space(TabString As String, Optional TabSize As Long = 4) Dim CurrPos As Long, PrevPos As Long, FindPos As Long Dim SpcSize As Long, SubStr As String, Result As String CurrPos = 0 PrevPos = 0 FindPos = InStr(PrevPos + 1, TabString, vbTab) Do While FindPos > 0 SubStr = Mid(TabString, PrevPos + 1, FindPos - PrevPos - 1) Result = Result & SubStr CurrPos = CurrPos + LenB(StrConv(SubStr, vbFromUnicode)) SpcSize = TabSize - (CurrPos Mod TabSize) Result = Result & Space(SpcSize) CurrPos = CurrPos + SpcSize PrevPos = FindPos FindPos = InStr(PrevPos + 1, TabString, vbTab) Loop If PrevPos <> 0 Then TabString = Result & Mid(TabString, PrevPos + 1) End If End Sub
0 件のコメント:
コメントを投稿