文字列内に含まれるタブを空白に変換する(ファンクション版)
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 件のコメント:
コメントを投稿