|
回复 1# 的帖子
前几天看到php里有1个addcslashes()函数,所以用vbs山寨了1个,应该可以满足第1题里的要求吧。
PS:题目我没看太明白,呵呵。
--------------------------------------------------------------------------------------------------
'array_unique(arr)用来去除数组中的重复项,该函数使用了dictionary中key不能使用重复项的特性,有些危险.....慎用.....
Function array_unique(arr)
size = UBound(arr) + 1
Dim hash
Set hash = CreateObject("scripting.dictionary")
Dim count
count = 0
For i = 0 To (size - 1)
On Error Resume Next
key = arr(i)
For Each value In arr
If arr(i) = value Then
count = count + 1
End If
Next
hash.Add key , count
count = 0
Next
array_unique = hash.Keys
Set hash = nothing
End Function
-----------------------------------邪恶的分隔线-----------------------------------------------------------
'addcslashes(str, charlist)从str中找到charlist中指定的字符并在前面添加"\",charlist支持正则表达式,因此如果是找正则表达式中的特殊字符的话,只需要这样写charlist[|\^*.\\]之类的,具体的大家可以用正则来写一下。另外目前该函数只支持单字符搜索,有其他需求的兄弟可以自行修改一下。
Function addcslashes(str, charlist)
Set reg = New RegExp
reg.IgnoreCase = False
'If InStr(str,"^") Then
' str = Replace(str, "^", "\^")
'End If
reg.Pattern = charlist
reg.Global = false
Set hash = CreateObject("scripting.dictionary")
i = 0
Set matches = reg.Execute(str)
For Each match In matches
pos = match.FirstIndex + 1
hash.Add i, Mid(str, pos, 1)
i = i + 1
Next
newArr = array_unique(hash.Items)
For Each value In newArr
str = Replace(str, value, ("\" & value))
Next
addcslashes = str
set hash = nothing
End Function |
|