2011-12-06 98 views
3

我有6400+記錄,我正在循環。對於其中的每一個:我通過對類似於郵局使用的東西(查找地址)進行測試來檢查地址是否有效。我需要仔細檢查郵政編碼是否已經退回比賽。vbscript - 替換所有空格

唯一的問題是,郵政編碼可以以許多不同的格式,例如已被輸入:

OP6 6YH 
OP66YH 
OP6 6YH. 

如果替換(strPostcode,」‘‘’)=替換(xmlAddress.selectSingleNode(’ //postcode").text,「」,「」)然後

我想從字符串中刪除所有空格。如果我做了上面的替換,它將刪除第一個示例的空間,但爲第三個空間留下空間。

我知道我可以使用循環語句刪除,但相信這會令腳本運行的很慢,因爲它會通過6400個記錄必須循環以刪除空格。

還有別的辦法嗎?

+0

我不關注。具體而言,你的第三個例子看起來與第一個例子相同 - 「Replace」結果怎麼可能不同?你正在做出很多假設 - 你有沒有先試過?你的「記錄」來自哪裏 - 數據庫查詢?談話很便宜。讓我看看代碼(Linus Torvalds)。 – PointedEars

+1

我在第一個空間中放了兩個空格,但Stackoverflow必須刪除第二個空格。是的,我已經厭倦了Replace函數,它只刪除了第一個空格(如果有兩個空格在一起)。 CSV文件和XML文件。 – ClareBear

回答

4

我不知道你不得不加-1刪除所有空格

Replace(strPostcode," ","",1,-1) 
+0

按照[MSDN庫(http://msdn.microsoft.com/en-us/library/238kz954(VS.84)的.aspx),你不應該需要:'1'和'-1'會是默認的,分別。然而,當你正在處理XML和使用XPath已經,你應該找一個XPath解決方案,而不是一個簡單的VBScript的解決方案,這一問題。 – PointedEars

2

這是語法Replace(expression, find, replacewith[, start[, count[, compare]]])

,則默認爲-1用於計數和1的開始。可能是一些dll損壞改變了Replace函數的默認值。

4

個人而言,我剛剛做了一個循環是這樣的:

Dim sLast 
Do 
    sLast = strPostcode 
    strPostcode = Replace(strPostcode, " ", "") 
    If sLast = strPostcode Then Exit Do 
Loop 

然而,你可能需要使用正則表達式,而不是替代:

Dim re : Set re = New RegExp 
re.Global = True 
re.Pattern = " +" ' Match one or more spaces 
WScript.Echo re.Replace("OP6 6YH.", "") 
WScript.Echo re.Replace("OP6 6YH.", "") 
WScript.Echo re.Replace("O P 6  6 Y  H.", "") 
Set re = Nothing 

後者的輸出是:

D:\Development>cscript replace.vbs 
OP66YH. 
OP66YH. 
OP66YH. 
D:\Development> 
相關問題