到現在爲止我已經手動添加字符替換打破我的代碼。我想更積極主動一點,所以我發現這個功能是應該代替一切,除了有效的字符。
我的第一個障礙是,它似乎並沒有工作。下面的代碼是我完整的測試文件和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我做這是導致它返回任何結果。它正在工作。仍然會接受針對性能問題或更好建議的意見。
您能否介紹一下^ \ w +是什麼意思? – lovechillcool
模式中的\ w是一個匹配任何單詞字符的字符類。這相當於[a-zA-Z_0-9]。 ^表示字符串的開始。所以這個模式將匹配從字符串的最開始處開始的一行字串中的字符串,並結束最後一個字符或字符串的末尾,無論哪個先遇到。 – Nilpo
非常感謝。 @Nilpo – lovechillcool