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.
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.
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
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
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
Đố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
Chức năng tuyệt vời, cảm ơn! –