2009-07-08 10 views

Respuesta

10

Esta función elimina todos los espacios en blanco, (espacios, tabulaciones, etc.) a partir de una cadena:

Function LTrimEx(str) 
    Dim re 
    Set re = New RegExp 
    re.Pattern = "^\s*" 
    re.Multiline = False 
    LTrimEx = re.Replace(str, "") 
End Function 
0

respuesta de Andrew no es correcto. LTrim, RTrim y Trim solo eliminan espacios, no pestañas.

He reformateado su código y he agregado una función para quitar cualquier carácter inicial o posterior.

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 
0
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 
9

Para un ajuste tanto a la izquierda ya la derecha (incluyendo las lengüetas, retorno de carro, avances de línea, espacios) en una cadena de varias líneas que esto funcionará.

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 
+1

¡Gran función, gracias! –

Cuestiones relacionadas