2010-02-12 19 views
0

我有一個vbscript文件正在讀取一個文件並將每行發送到終端程序。當涉及到字符串中間的分號時,它將分號分割爲字符串。如何在VB腳本中轉義分號?

我一直在使用此代碼很長一段時間與其他字符串沒有問題。腳本正在讀取的文件的每行有一個字符串。

導致該問題的文件中的字符串爲:2101; 99PSP

這裏是我使用的代碼(與稱爲思考終端仿真程序):

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 
+1

您的意思是「它將字符串拆分爲分號」嗎? – AnthonyWJones 2010-02-12 19:29:54

+2

你遇到的問題到底是什麼?你是說數據中有一個有效的分號,導致分組不能正常工作? – 2010-02-12 19:31:22

+0

數據在字符串中間有一個有效的分號。我不希望字符串在分號上分開,只是在換行符上。 – Magwich 2010-02-13 01:23:40

回答

1

我認爲這可能與下面的代碼行的事做:

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

謝謝sooo。我正在重複使用一些非常古老的代碼,直到現在我纔看到這一點。在前面的腳本中,我使用的是「;」作爲分隔符。 – Magwich 2010-02-13 01:29:01

1

這個問題如果字符串是從你正在閱讀的文件,整條生產線:

2101;99PSP 

問題是,你正試圖從每一行中獲得3個項目,而這個只有2個。爲了說明沒有第三個項目的行,你應該從你的Split功能中刪除第三個參數然後在使用第三項之前檢查陣列的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 
1

如果要拆分在分號線,但文本包含額外的分號,你就必須

  1. 尋求額外的分號
  2. 他們改變的模式通常不會被發現在文本
  3. 分割你行
  4. 變化從第2步回分號
012模式

或者採取簡單的路線,並且不允許在您的閱讀文件中使用額外的分號。

發佈一些示例行(包括問題行)將允許有人幫助您編寫代碼來搜索額外的分號。

如果(2101; 99PSP)全部在線上,請參閱Shawn Steward的回答。