6

vbscript を使用してファイルを読み取り、タブを含む先頭のスペースをすべて削除する必要があります。LTRIM は先頭のスペースを削除しますが、タブも削除するにはどうすればよいですか。

ありがとう。

4

4 に答える 4

11

この関数は、文字列からすべての先頭の空白 (スペース、タブなど) を削除します。

Function LTrimEx(str)
  Dim re
  Set re = New RegExp
  re.Pattern = "^\s*"
  re.Multiline = False
  LTrimEx = re.Replace(str, "")
End Function
于 2009-07-08T15:36:32.113 に答える
9

複数行の文字列の左右両方のトリム (タブ、キャリッジ リターン、ライン フィード、スペースを含む) の場合、これは機能します。

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
于 2009-10-22T10:55:37.940 に答える
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
于 2009-07-08T17:27:35.303 に答える
0

アンドリューの答えは正しくありません。LTrim、RTrim、および Trim はスペースのみを削除し、タブは削除しません。

コードを再フォーマットし、先頭または末尾の文字を削除する機能を追加しました。

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
于 2009-07-08T15:58:08.417 に答える