2011-07-15 57 views
2

到現在爲止我已經手動添加字符替換打破我的代碼。我想更積極主動一點,所以我發現這個功能是應該代替一切,除了有效的字符。 我的第一個障礙是,它似乎並沒有工作。下面的代碼是我完整的測試文件和MSGBOX出現空白。 VBScript函數乾淨串只允許某些字符

我的第二個問題是關於性能。這個函數處理非常非常大的字符串。這種方法會比較慢嗎?任何人都推薦別的嗎?

Function CleanUp (input) 
     Dim objRegExp, outputStr 
     Set objRegExp = New Regexp 

     objRegExp.IgnoreCase = True 
     objRegExp.Global = True 
     objRegExp.Pattern = "((?![a-zA-Z0-9]).)+" 
     outputStr = objRegExp.Replace(input, "-") 

     objRegExp.Pattern = "\-+" 
     outputStr = objRegExp.Replace(outputStr, "-") 

     CleanUp = outputStr 
    End Function 

    MsgBox (CleanUp("Test")) 

編輯:我傻,只是看到了可變的mixup我做這是導致它返回任何結果。它正在工作。仍然會接受針對性能問題或更好建議的意見。

回答

2

你甚至可以進一步簡化它。

objRegExp.Pattern =「[^ \ w +]」

+0

您能否介紹一下^ \ w +是什麼意思? – lovechillcool

+0

模式中的\ w是一個匹配任何單詞字符的字符類。這相當於[a-zA-Z_0-9]。 ^表示字符串的開始。所以這個模式將匹配從字符串的最開始處開始的一行字串中的字符串,並結束最後一個字符或字符串的末尾,無論哪個先遇到。 – Nilpo

+0

非常感謝。 @Nilpo – lovechillcool

2

它不知道什麼是你的榜樣預期的結果,但也許你可以嘗試的模式,而不是:

objRegExp.Pattern =「[^ A-ZA-Z0-9]」

希望工程