2009-07-08 31 views
5

Tôi cần đọc tệp bằng cách sử dụng vbscript và xóa tất cả dấu cách hàng đầu bao gồm bất kỳ tab nào. Tôi bây giờ LTRIM sẽ loại bỏ các không gian hàng đầu nhưng làm cách nào để xóa các tab.Cắt không gian hàng đầu bao gồm các tab

Cảm ơn.

Trả lời

10

Chức năng này loại bỏ tất cả các khoảng trắng hàng đầu (khoảng trắng, tab vv) từ một chuỗi:

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

câu trả lời của Andrew là không đúng. LTrim, RTrim và Trim chỉ xóa các dấu cách, không phải các tab.

Tôi đã định dạng lại mã của bạn và thêm một hàm để loại bỏ bất kỳ ký tự đầu hoặc cuối nào.

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

Đối với một cắt cả hai bên trái và bên phải (bao gồm các tab, vận chuyển trở lại, dòng nguồn cấp dữ liệu, không gian) trong một chuỗi multiline này sẽ làm việc.

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

Chức năng tuyệt vời, cảm ơn! –

Các vấn đề liên quan