从行中跳过一些文本

时间:2018-07-23 14:27:29

标签: vbscript

我需要从行中删除一些文本:

firestore.update({ collection: 'users' }, { score : 0 }

我的文本文件strdir = "C:\texto.txt" Set fso = CreateObject("Scripting.FileSystemObject") Set objFile = fso.OpenTextFile(strdir) Dim arrTxt() k = 0 Do Until objFile.AtEndOfStream z = (k+1) ReDim Preserve arrTxt(z) line = objFile.ReadLine arrTxt(k) = line k = z Loop print Join(arrTxt, ",") print (UBound(arrTxt) + 1)

name=test
correo=test@test.tst

我要删除“ name =“和“ correo =”。

3 个答案:

答案 0 :(得分:3)

@Cid展示了如何使用“拆分/合并”功能来实现所需的功能。我将演示如何利用RegEx的功能来实现类似的结果,而不必一次读取一行。

假设您的文本文件如下所示 enter image description here

strdir = "C:\texto.txt"
Set objFSO = CreateObject("Scripting.filesystemobject")
Set objFile = objFSO.OpenTextFile(strdir)
strContent = objFile.ReadAll
objFile.Close

msgbox RemoveLines(strContent)


Function RemoveLines(str)
  Dim objRegEx
  Set objRegEx = New RegExp
  With objRegEx
      .Global = True
      .Pattern = "^name=.*\n|^correo=.*\n"
      .Multiline = True     
  End With
  RemoveLines = objRegEx.Replace(str, "")
End Function

输出

enter image description here

答案 1 :(得分:2)

我会split使用=作为分隔符,然后检查第一个元素是name还是correo。

strdir = "C:\texto.txt"
Set fso = createobject("Scripting.filesystemobject")
Set objFile = fso.OpenTextFile(strdir)
Dim arrTxt()
k = 0
Do until objFile.AtEndOfStream
    z = (k+1)
    ReDim preserve arrTxt(z)
    line = objFile.ReadLine
    myArray = Split(line, "=")
    If (Not ((UBound(myArray) > 0) AND (myArray(0) = "name" OR myArray(0) = "correo"))) Then
        arrTxt(k) = line
        k = z
    End If
loop
print Join(arrTxt,",") 
print (Ubound(arrTxt) + 1)

答案 2 :(得分:1)

使用-最初的想法是使代码对人类易于理解-该代码具有以下3个任务:

  • 从文件中读取并将输入保存为字符串;
  • 操作字符串(例如,替换name=correo=
  • 将操作后的字符串写入新文件;

所有这些操作在TestMe()中都很明显:


Sub TestMe()

    Dim readTxt As String
    Dim filePath As String: filePath = "C:\text.txt"

    readTxt = ReadFromFile(filePath)
    readTxt = Replace(readTxt, "name=", "")
    readTxt = Replace(readTxt, "correo=", "")

    WriteToFile filePath, readTxt

End Sub

一旦上方的骨骼准备就绪,两个功能ReadFromFileWriteToFile就非常方便了:

Public Function ReadFromFile(path As String) As String

    Dim fileNo As Long
    fileNo = FreeFile

    Open path For Input As #fileNo

    Do While Not EOF(fileNo)
        Dim textRowInput As String
        Line Input #fileNo, textRowInput
        ReadFromFile = ReadFromFile & textRowInput
        If Not EOF(fileNo) Then
            ReadFromFile = ReadFromFile & vbCrLf
        End If
    Loop

    Close #fileNo

End Function

Sub WriteToFile(filePath As String, text As String)

    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Dim oFile As Object
    Set oFile = fso.CreateTextFile(filePath)
    oFile.Write text
    oFile.Close

End Sub