func isValidHex(s string) bool {
for _, r := range s {
if !(r >= '0' && r <= '9' || r >= 'a' && r <= 'f' || r >= 'A' && r <= 'F') {
return false
}
}
return true
}
测试:
fmt.Println(isValidHex("Hello World >)"))
fmt.Println(isValidHex("aaa12Eb9990101010101112cC"))
2条答案
按热度按时间ni65a41a1#
迭代字符串的字符,并检查每个字符是否都是有效的十六进制数字。
测试:
输出(在Go Playground上尝试):
注意:您可能会尝试使用
hex.DecodeString()
并检查返回的错误:如果它是nil
,它是有效的,但是要注意这个函数要求字符串的长度是偶数(因为它从十六进制数字产生字节,2个十六进制数字形成一个字节),更不用说如果你不需要结果(作为字节片),这会更慢,并且会产生不必要的垃圾(让gc收集)。另一个解决方案可以使用
big.Int.SetString()
:输出相同,在Go Playground上尝试,但是速度慢,并且使用内存分配(生成垃圾)。
k2arahey2#
这个怎么样
如果字符串包含十六进制非法字符,则为True