2011-12-06 13 views
3

私は6400+レコードをループしています。それぞれについて:私は、郵便局が使用しているのと似たもの(住所を見つける)と照合してアドレスが有効であることを確認します。私は、私が引っ張った郵便番号が一致したことを再度確認する必要があります。vbscript - すべてのスペースを置き換えます。

唯一の問題は、郵便番号は、例えば、多数の異なるフォーマットで入力された可能性があることである。

OP6 6YH 
OP66YH 
OP6 6YH. 

(strPostcodeを、」 『『』)に置き換え=((xmlAddress.selectSingleNodeを交換した場合』 //postcode").text、 ""、 "")

文字列からすべてのスペースを削除します。上記のReplaceを実行すると、最初の例のスペースは削除されますが、3番目のスペースのスペースは残ります。

ループステートメントを使用してこれらを削除できますが、スペースを削除するために6400+レコードをループする必要があるため、スクリプトの実行が遅くなると思われます。

別の方法がありますか?

+0

私は従いません。具体的には、3番目の例は最初の例と同じに見えます。つまり、 'Replace'の結果はどう違うのでしょうか?あなたは多くの仮定をしています - それを最初に試したことがありますか?あなたの "レコード"はどこから来たのですか?データベースのクエリですか?口で言うだけなら簡単です。私にコードを教えてください(Linus Torvalds)。 – PointedEars

+1

最初のスペースに2つのスペースを入れましたが、Stackoverflowは2番目のスペースを削除しているに違いありません。はい私は置換機能に疲れていて、最初のスペースだけが削除されています(一緒にスペースが2つある場合)。 CSVファイルとXMLファイル。 – ClareBear

答えて

4

私はあなたが追加する必要がありました気づいていなかった-1、すべてのスペース

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

[MSDN Library](http://msdn.microsoft.com/en-us/library/238kz954(VS.84).aspx)によれば、「1」と「-1」は必要ありません。それぞれデフォルトです。しかし、XMLを扱い、XPathを既に使用している場合は、この問題に対して、単純なVBScriptソリューションではなく、XPathソリューションを見つけようとする必要があります。 – PointedEars

2

を削除する。これは、それがスタートのカウントのための-11がデフォルトになります構文Replace(expression, find, replacewith[, start[, count[, compare]]])

です。いくつかのDLLが破損している可能性があります置換機能のデフォルトを変更します。あなたの代わりに置き換える正規表現を使用することもできますが

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

4

個人的に私はちょうどこのようなループをやった

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> 
関連する問題