2009-07-08 8 views

Répondre

10

Cette fonction supprime tous les espaces principaux (espaces, onglets, etc.) à partir d'une chaîne:

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

réponse Andrew est pas correct. LTrim, RTrim et Trim suppriment uniquement les espaces, pas les onglets.

J'ai reformaté votre code et ajouté une fonction pour supprimer les caractères de début ou de fin.

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

Pour une garniture à la fois à gauche et à droite (y compris les onglets, retour chariot, sauts de ligne, des espaces) dans une chaîne multiligne cela fonctionnera.

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

Grande fonction, merci! –

Questions connexes