如何在VB脚本中转义分号?

时间:2010-02-12 19:27:59

标签: vbscript escaping

我有一个vbscript文件正在读取文件并将每一行发送到终端程序。当它在字符串中间的分号时,它会在字符串处分割分号。

我一直在使用这段代码与其他字符串没有任何问题。脚本正在读取的文件中每行有一个字符串。

导致问题的文件中的字符串是:2101; 99PSP

这是我正在使用的代码(使用名为Reflections的终端仿真程序):

Sub NarcoticOrderableItemTurnOff()

''# Constants used by OpenTextFile()
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8

Const ICON_INFO = 64    ''# Information message; displays 'i' icon.

Set wshshell = CreateObject("WScript.Shell")

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = _
        objFSO.OpenTextFile("P:\NarcoticOrderableItems.txt", ForReading)

Session.Transmit "^Orderable Item Edit (CPRS)" & vbCr

    Do Until objTextFile.AtEndOfStream

        strNextLine = objTextFile.ReadLine
        arrC2oderableItemList = Split(strNextLine, ";", 3)

        'arrServiceList(0) = Area of Use
        'arrServiceList(2) = Printer for that area of use

        With Session

        .WaitForString "Select ORDERABLE ITEMS NAME:"
        .Transmit arrC2oderableItemList(0) & vbCr
        .WaitForString "//"
        .Transmit "N" & vbCr
        .WaitForString "//"
        .Transmit vbCr
        .WaitForString "//"
        .Transmit vbCr
        .WaitForString "//"
        .Transmit vbCr
        End With

    Loop

objTextFile.close

Session.MsgBox "All done!  C2 Orderable Items turned off!", vbExclamation

''#ErrorHandler:
''#    Session.MsgBox Err.Description, vbExclamation + vbOKOnly

End Sub

3 个答案:

答案 0 :(得分:1)

我认为它可能包含以下一行代码:

arrC2oderableItemList = Split(strNextLine, ";", 3)

答案 1 :(得分:1)

如果此问题字符串是您正在阅读的文件的整行:

2101;99PSP

问题是你试图从每一行获得3个项目而这个只有2个。要考虑没有第3个项目的行,你应该从你的Split功能中删除第3个参数然后检查使用第3项之前的数组的UBound。

arrC2oderableItemList = Split(strNextLine, ";")

If UBound(arrC2oderableItemList) >= 2 Then
  ''# There are 3 items or more in the Array (O-based)
  ''# Can do something with arrC2oderableItemList(2)
Else
  ''# There are only 2 items (or less) in the Array
  ''# Do not use arrC2oderableItemList(2)
End If

答案 2 :(得分:1)

如果您以分号分隔行,但文本包含额外的分号,则必须

  1. 搜索额外的分号
  2. 将它们更改为通常在文本中找不到的模式
  3. 拆分行
  4. 将步骤2中的模式更改为分号
  5. 或者采取简单的路线,不要在你的阅读文件中留出额外的分号。

    发布一些示例行(包括问题行)将允许某人帮助您编写代码以搜索额外的分号。

    如果(2101; 99PSP)就在线上,请参阅Shawn Steward的回答。