VBS Readline-使用instr()来匹配数据,同时忽略多余的空格

阿德里安

我正在尝试找到一种方法来增强脚本的可靠性。它已经可以工作了,但是可以在导入的文本文件中添加一个简单的多余空格就扔掉了。

因此,如果我可以找到一种方法来执行以下操作,我想将脚本更改为Readline:

.txt文件中的文本示例:

    FLIGHTS OVER  TUSKY  PLEASE FILE: 
        AT OR WEST OF A LINE   RBV..LLUND..BAYYS..PUT..DIRECT
    FLIGHTS OVER EBONY PLEASE FILE:
        AT OR WEST OF A LINE   RBV..LLUND..BAYYS..PUT..DIRECT

我知道以下内容不起作用,但是如果进行了简单的修改,那就很好了。

set WshShell = WScript.CreateObject("WScript.Shell")
Return = WshShell.Run("C:\Downloads\software\putty.exe -load "testing")

set objFSO = CreateObject("Scripting.FileSystemObject") 
set objFile = objFSO.OpenTextFile("C:\Users\AW\Desktop\Entries1.txt") 

strLine = objFile.ReadAll

If InStr(strLine1, "OVER  TUSKY  PLEASE") and InStr(strLine2, "BAYYS..PUT..DIRECT") Then
    trans307="TUSKY"
    ind306="4"

我现在要使用的是:我在notepad ++中编辑文本文件,以“&”替换“ \ n”,用“”替换“ \ r”,然后全部是一个文本字符串,然后在该字符串中搜索字符串。

If InStr(strLine, "FLIGHTS OVER  TUSKY  PLEASE FILE: AT OR WEST OF A LINE      ..RBV..LLUND..BAYYS..PUT..DIRECT") _
or InStr(strLine, "FLIGHTS OVER  TUSKY  PLEASE FILE: AT OR WEST OF A LINE      RBV..LLUND..BAYYS..PUT...DIRECT") Then
    trans308C="TUSKY"
    ind308C="4"

问题:如果文本文件的创建者在此行“ AT或WEST OF A LINE RBV..LLUND..BAYYS..PUT..DIRECT”中的任意位置放置了另一个空格“”,则脚本将无法识别该字符串。在上面的示例中,我不得不使用额外的空间或几个点创建另一个或InStr(strLine,“”)语句。

更新:我会尝试类似的东西:

set objFSO = CreateObject("Scripting.FileSystemObject") 
set objFile = objFSO.OpenTextFile("C:\Users\AW\Desktop\Entries1.txt") 

strLine1 = objFile.Readline(1)
strLine2 = objFile.Readline(2)

If InStr(strLine1, "FLIGHTS OVER  TUSKY") and InStr(strLine2, "RBV..LLUND..BAYYS..PUT..DIRECT") Then
    trans1="TUSKY"
    ind1="4"

看看我能否一次读取两行,然后遍历文本文件。

达米安

如果您害怕正则表达式并正在寻找替代方法,则可以创建一个笨拙的函数以添加到脚本中。根据您的样本,似乎句号也从未正常用于正常目的,而是倾向于表示空格。(我建议改用正则表达式!)

使用这些假设,您可以创建一个像这样的笨拙函数,该函数查找句号,并将其转换为空格,以消除多余的空格。正则表达式可以正确解决这些问题。

您可以使用以下功能测试基本的预期结果。例如,假设您在firLine中设置了一行文本,其中包含多个空格或句号,该函数将识别出以下内容:

firLine = "THIS.IS.A.TEST..YOU...SEE      MULTIPLE SPACES"
if instr(sanitize(firLine),"THIS IS A TEST YOU SEE MULTIPLE SPACES") then
       wscript.echo "Found it"
End If

这是您可以在脚本末尾粘贴的笨拙函数:

Function sanitize(srStr)
    Dim preSanitize, srC, spaceMarker
    preSanitize = ""

    for srC = 1 to len(srStr)
        if mid(srStr, srC, 1) = "." then 
            preSanitize = preSanitize & " "
        else
            preSanitize = preSanitize & mid(srStr, srC, 1)
        End If

    spaceMarker = false
    sanitize = ""

    for srC = 1 to len(preSanitize)
        If mid(preSanitize, srC, 1) = " " then
            if spaceMarker = false then 
                sanitize = sanitize & mid(preSanitize, srC, 1)
                spaceMarker = true          
            End If
        else
            sanitize = sanitize & mid(preSanitize, srC, 1)
            spaceMarker = false
        End If
    Next


End Function

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

VBS Readline-使用instr()来匹配数据,同时忽略多余的空格

来自分类Dev

VBS Readline - using instr(), to match data whilst ignoring extra spaces

来自分类Dev

使用readline()?

来自分类Dev

使用VBS自动截图

来自分类Dev

VBS变量使用执行

来自分类Dev

使用readLine()的while循环

来自分类Dev

使用console.readline()

来自分类Dev

使用VBS获取过程路径

来自分类Dev

使用cmd运行vbs脚本

来自分类Dev

使用VBS禁用/启用Taskmanager

来自分类Dev

使用HTML输入的VBS变量

来自分类Dev

使用 VBS 的 Excel 宏循环

来自分类Dev

使用 VBS 乘以 2 矩阵

来自分类Dev

使用 VBS 打印 PDF 文件

来自分类Dev

不推荐使用DataInputStream readLine()

来自分类Dev

使用readline限制读取的数量

来自分类Dev

使用readline防止输出回车

来自分类Dev

使用readline时nodejs暂停

来自分类Dev

不推荐使用DataInputStream readLine()

来自分类Dev

使用readline防止输出回车

来自分类Dev

使用BufferedReader的readline()输入arraylist

来自分类Dev

使用 Ruby readline 返回行号

来自分类Dev

权限被拒绝使用VBS访问csv文件

来自分类Dev

使用参数在VBS中调用Powershell

来自分类Dev

使用vbs在exe中运行文件

来自分类Dev

使用python创建的参数执行vbs文件

来自分类Dev

使用参数在VBS中调用Powershell

来自分类Dev

如何使用slmgr.vbs激活Windows?

来自分类Dev

在路径(.Vbs)中使用“ currentDirectory&”变量