2011-12-06 4 views
3

6400 + 개의 레코드가 있습니다. 각각에 대해 : 나는 우체국이 사용하는 것과 유사한 것을 (주소 찾기) 테스트하여 주소가 유효한지 확인합니다. 나는 내가 뽑은 우편 번호가 일치하는지 다시 한 번 확인해야한다.vbscript - 모든 공백 바꾸기

유일한 문제는 우편 번호는, 예를 들어 다른 포맷 번호에 입력되었을 수도있다 :

OP6 6YH 
OP66YH 
OP6 6YH. 

(strPostcode을, "", "") 교체 = "((xmlAddress.selectSingleNode 교체하면 //postcode").text, "", "")

문자열에서 공백을 모두 제거하고 싶습니다. 위의 Replace를 수행하면 첫 번째 예제의 공간은 제거되지만 세 번째 예제의 공간은 그대로 두십시오.

루프 문을 사용하여 제거 할 수 있지만이 공간을 제거하기 위해 6400+ 레코드를 반복해야하므로 스크립트가 실제로 느리게 실행됩니다.

다른 방법이 있습니까?

+0

나는 따라 가지 않습니다. 특히, 세 번째 예제는 첫 번째 예제와 동일하게 보입니다 - 어떻게 대체 결과가 다를 수 있습니까? 당신은 많은 가정을하고 있습니다 - 먼저 시도해 보셨습니까? "레코드"는 데이터베이스 쿼리에서 비롯된 것입니다. 대화는 싸다. 나에게 코드를 보여줘. (Linus Torvalds). – PointedEars

+1

첫 번째 공간에 두 개의 공백을 넣었지만 두 번째 공백은 Stackoverflow에서 제거해야합니다. 그래, 나는 바꾸기 기능을 피곤하고 그것은 단지 두 개의 공백이 있다면 그것은 첫 번째 공간을 제거했다. CSV 파일과 XML 파일. – ClareBear

답변

4

난 당신이 추가 -1이 그것을 시작을 카운트 -11로 기본 설정됩니다 구문 Replace(expression, find, replacewith[, start[, count[, compare]]])

에게 모든 공간

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

을 제거했다 몰랐어요. 대체 기능의 기본값을 변경하는 일부 DLL이 손상되었을 수 있습니다.

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 

후자의 출력은 다음과 같습니다 :

를 대신 대체 정규 표현식을 사용할 수 있습니다 그러나

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

D:\Development>cscript replace.vbs 
OP66YH. 
OP66YH. 
OP66YH. 
D:\Development>