VBScript中是否有函数检查字符串是否包含有效的十六进制值?
例如:
Dim x : x = IsHexadecimal("2AF3") 'x = True
Dim y : y = IsHexadecimal("X2M3") 'y = False
答案 0 :(得分:2)
您可以使用正则表达式,正如其他人已经建议的那样:
Function IsHexadecimal(ByVal v)
Set re = New RegExp
re.Pattern = "^[a-f0-9]+$"
re.IgnoreCase = True
IsHexadecimal = re.Test(v)
End Function
另一种解决方案(具有更多黑客价值):
Function IsHexadecimal(ByVal v)
On Error Resume Next
Dim i : i = CLng("&h" & v)
IsHexadecimal = Not IsEmpty(i)
On Error Goto 0
End Function
答案 1 :(得分:1)
我意识到这是一个旧线程,但这是我的解决方案。
它基于vbscript的内置IsNumeric
函数,可以识别十六进制字符串,前提是它前面有&h
function is_hex(str_hex)
is_hex = IsNumeric("&h" & str_hex)
end function
答案 2 :(得分:0)
不确定这样的函数是否内置于vbscript中,但您可以使用以下内容滚动自己的函数:
function isHexadecimal(s as string)
Dim i as integer, c as string, R as boolean
R=true
for i=1 to length(s)
c=mid(S,i,1)
if instr("0123456789ABCDEFabcdef", c)<=0 then R=false
next i
sHexadecimal=R
end function
答案 3 :(得分:0)
您可以使用RegEx,如下所示:
'Prepare a regular expression object
Set myRegExp = New RegExp
myRegExp.IgnoreCase = True
myRegExp.Global = True
myRegExp.Pattern = "\A\b[0-9a-fA-F]+\b\Z"
' Pop up a message box for each match
Set myMatches = myRegExp.Execute(subjectString)
For Each myMatch in myMatches
msgbox myMatch.Value, 0, "Found Match"
Next
点击此链接http://www.regular-expressions.info/vbscript.html
希望它有所帮助^ _ ^
答案 4 :(得分:0)
与Ansgar Wiechers的答案相同,但正则表达式需要是a-f,而不是a-e。
Function IsHexadecimal(ByVal v)
Set re = New RegExp
re.Pattern = "^[a-f0-9]+$"
re.IgnoreCase = True
IsHexadecimal = re.Test(v)
End Function
答案 5 :(得分:0)
编写一个实现的函数:
For Each character In input
IF character Is Not In "0-9A-Za-z"
Exit with False
End If
Next
Exit with True
或使用带有.Pattern“[^ 0-9A-Za-z]”的RegExp.Test()。
在这两种情况下,检查输入的长度可能是一个好主意。
答案 6 :(得分:0)
我写了一个特定的功能。
以下代码可以正常使用:
Function IsHexadecimal(ByVal input_string)
Dim b : b = False
Dim s_length : s_length = Len(input_string)
Dim char
For i = 1 To s_length
char = Asc(Mid(input_string, i, 1))
If (char > 47 And char < 58) Or _
(char > 64 And char < 71) Or _
(char > 96 And char < 103) Then
b = True
Else
b = False
Exit For
End If
Next
IsHexadecimal = b
End Function