Public Function SelName(ByVal iNumber As Integer) As String ‘生成 iNumber 位数的字符串
Dim I As Integer, J As Integer
Dim ReservedArray As Variant
ReservedArray = Array(“MANUALLY”, “SUPPORT”, “OHTLLINE”, “ACAD”, “WCAD”)
ERR_AVOID:
SelName = “”
Randomize
For I = 1 To iNumber
SelName = SelName & Chr((64 + Int((26 * Rnd) + 1)))
Next I
If IsInArray(SelName, ReservedArray) Then GoTo ERR_AVOID
End Function
Public Function CountStr(ByVal bOverlapable As Boolean, ByVal sMom As String, ByVal sSon As String) As Integer ‘sSon 在 sMom 中出现的次数
CountStr = 0
Do While InStr(1, sMom, sSon, vbTextCompare) > 0
CountStr = CountStr + 1
If bOverlapable Then ‘允许重复计数,如 nnn 中含两个 nn
sMom = Right(sMom, Len(sMom) – InStr(1, sMom, sSon, vbTextCompare))
Else ‘不允许重复计数,如 nnn 中含一个 nn
sMom = Right(sMom, Len(sMom) – InStr(1, sMom, sSon, vbTextCompare) – (Len(sSon) – 1))
End If
Loop
End Function
Public Function ExtractDivide(ByVal sLetter As String, ByVal sData As String, ByVal iOrder As Integer) As String ‘读出由 sLetter 分割的第 IOrder 节子字符串
ExtractDivide = “”
If sData = “” Then Exit Function
If iOrder < 1 Then Exit Function If iOrder > CountStr(False, sData, sLetter) + 1 Then Exit Function
sData = Trim(sData)
Dim TempArray As Variant
TempArray = Split(sData, sLetter, -1, vbTextCompare)
ExtractDivide = TempArray(iOrder – 1)
ExtractDivide = Trim(ExtractDivide)
End Function
Public Function CutLeft(ByVal sOriginal As String, ByVal sCut As String) As String ‘去掉左侧字符 sCut 一次(如果有)
CutLeft = LTrim(sOriginal)
If InStr(1, sOriginal, sCut, vbTextCompare) = 1 Then CutLeft = Right(sOriginal, Len(sOriginal) – Len(sCut))
End Function
Public Function CutRight(ByVal sOriginal As String, ByVal sCut As String) As String ‘去掉右侧字符 sCut 一次(如果有)
CutRight = RTrim(sOriginal)
If CutRight = “” Then Exit Function
If InStrRev(sOriginal, sCut, -1, vbTextCompare) = Len(sOriginal) – Len(sCut) + 1 Then CutRight = Left(sOriginal, Len(sOriginal) – Len(sCut))
End Function
Public Function CutTerminal(ByVal sOriginal As String, ByVal sCut As String) As String ‘去掉两端字符 sCut 一次(如果有)
CutTerminal = Trim(sOriginal)
CutTerminal = CutLeft(CutTerminal, sCut)
CutTerminal = CutRight(CutTerminal, sCut)
End Function
Public Function PurgeLeft(ByVal sOriginal As String, ByVal sPurge As String) As String ‘去掉左侧字符 sPurge(所有)
sOriginal = LTrim(sOriginal)
If sPurge = vbCr Or sPurge = vbLf Or sPurge = vbCrLf Then
Do While Asc(Left(sOriginal, Len(sPurge))) = Asc(sPurge)
sOriginal = Right(sOriginal, Len(sOriginal) – Len(sPurge))
sOriginal = LTrim(sOriginal)
Loop
Else
Do While InStr(1, sOriginal, sPurge, vbTextCompare) = 1 And Len(sOriginal) – Len(sPurge) > -1
sOriginal = Right(sOriginal, Len(sOriginal) – Len(sPurge))
sOriginal = LTrim(sOriginal)
Loop
End If
PurgeLeft = sOriginal
End Function
Public Function PurgeRight(ByVal sOriginal As String, ByVal sPurge As String) As String ‘去掉右侧字符 sPurge(所有)
sOriginal = RTrim(sOriginal)
If sPurge = vbCr Or sPurge = vbLf Or sPurge = vbCrLf Then
Do While Asc(Right(sOriginal, Len(sPurge))) = Asc(sPurge)
sOriginal = Left(sOriginal, Len(sOriginal) – Len(sPurge))
sOriginal = RTrim(sOriginal)
Loop
Else
Do While InStrRev(sOriginal, sPurge, -1, vbTextCompare) = Len(sOriginal) – Len(sPurge) + 1 And Len(sOriginal) – Len(sPurge) > -1
sOriginal = Left(sOriginal, Len(sOriginal) – Len(sPurge))
sOriginal = RTrim(sOriginal)
Loop
End If
PurgeRight = sOriginal
End Function
Public Function PurgeTerminal(ByVal sOriginal As String, ByVal sPurge As String) As String ‘去掉两端字符 sPurge(所有)
sOriginal = PurgeLeft(sOriginal, sPurge)
sOriginal = PurgeRight(sOriginal, sPurge)
PurgeTerminal = sOriginal
End Function
Public Function GetAPIString(ByVal sAPI As String) As String ‘字符包装,用于处理 API 返回字符
On Error Resume Next
Dim iZeroPos As Integer
iZeroPos = InStr(sAPI, Chr$(0))
If iZeroPos > 0 Then
GetAPIString = Left$(sAPI, iZeroPos – 1)
Else
GetAPIString = sAPI
End If
On Error GoTo 0
End Function