Ho bisogno di leggere i file usando vbscript e rimuovere tutti gli spazi iniziali, comprese le eventuali schede. Ora LTRIM rimuoverà gli spazi iniziali, ma come rimuoverò anche le schede.Trim spazi iniziali comprese le schede
Grazie.
Ho bisogno di leggere i file usando vbscript e rimuovere tutti gli spazi iniziali, comprese le eventuali schede. Ora LTRIM rimuoverà gli spazi iniziali, ma come rimuoverò anche le schede.Trim spazi iniziali comprese le schede
Grazie.
Questa funzione rimuove tutti gli spazi leader (spazi, tabulazioni, ecc) da una stringa:
Function LTrimEx(str)
Dim re
Set re = New RegExp
re.Pattern = "^\s*"
re.Multiline = False
LTrimEx = re.Replace(str, "")
End Function
risposta di Andrew non è corretta. LTrim, RTrim e Trim rimuovono solo gli spazi, non le schede.
Ho riformattato il codice e aggiunto una funzione per eliminare tutti i caratteri iniziali o finali.
filename="test.txt"
set fso = createobject("scripting.filesystemobject")
set f = fso.opentextfile(filename)
do while not f.AtEndOfStream
s = TrimChars(f.readline, " " + vbTab)
wscript.echo "|" & s & "|"
loop
f.close
set f = nothing
set fso = nothing
''---
function TrimChars(s, sChars)
dim n, nLen, nStart
nLen = Len(s)
if nLen = 0 then
TrimChars = s
exit function
end if
''- skip leading chars
n = 1
do while (n <= nLen) And (InStr(sChars, Mid(s, n, 1)) > 0)
n = n + 1
loop
nStart = n
''- skip trailing chars
n = nLen
do while (n > nStart) And (InStr(sChars, Mid(s, n, 1)) > 0)
n = n - 1
loop
''- return remaining chars
nLen = n - nStart + 1
if (nLen > 0) and (nStart <= len(s)) then
TrimChars = Mid(s, nStart, nLen)
else
TrimChars = ""
end if
end function
Function LTrimEx(str)
Do Until x
If Left(str, 1) = Chr(32) Or Left(str, 1) = Chr(9) then
str = Right(str, Len(str) - 1)
Else
x = true
End If
Loop
LTrimEx = str
End Function
Per un assetto sia a destra ea sinistra (tra cui schede, ritorno a capo, avanzamenti di riga, spazi) in una stringa multilinea questo funzionerà.
Function MultilineTrim (Byval TextData)
Dim textRegExp
Set textRegExp = new regexp
textRegExp.Pattern = "\s{0,}(\S{1}[\s,\S]*\S{1})\s{0,}"
textRegExp.Global = False
textRegExp.IgnoreCase = True
textRegExp.Multiline = True
If textRegExp.Test (TextData) Then
MultilineTrim = textRegExp.Replace (TextData, "$1")
Else
MultilineTrim = ""
End If
End Function
Grande funzionalità, grazie! –