我正在尝试找到一种方法来增强脚本的可靠性。它已经可以工作了,但是可以在导入的文本文件中添加一个简单的多余空格就扔掉了。
因此,如果我可以找到一种方法来执行以下操作,我想将脚本更改为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] 删除。
我来说两句