Go 实现:判断字符串是否表示数值
func isNumber(s string) bool {\n num := 0\n for _, a := range s {\n if a == '+' || a == '-' {\n num++\n } \n if num > 1 {\n return false\n } \n }\n for _, a := range s {\n if a == '.' || a == 'e' || a == 'E' {\n return isDecimal(s) || isScientific(s)\n }\n }\n return isInteger(s)\n}\n\nfunc isDecimal(s string) bool {\n if len(s) == 0 {\n return false\n }\n if s[0] == '+' || s[0] == '-' {\n s = s[1:]\n }\n if len(s) == 0 {\n return false\n }\n hasDot := false\n for i, c := range s {\n if c == '.' {\n if hasDot {\n return false\n }\n hasDot = true\n } else if c < '0' || c > '9' {\n return false\n }\n if i == len(s)-1 && c == '.' {\n return false\n }\n }\n return true\n}\n\nfunc isScientific(s string) bool {\n if len(s) == 0 {\n return false\n }\n if s[0] == '+' || s[0] == '-' {\n s = s[1:]\n }\n if len(s) == 0 {\n return false\n }\n hasE := false\n for i, c := range s {\n if c == 'e' || c == 'E' {\n if hasE {\n return false\n }\n hasE = true\n if i == len(s)-1 {\n return false\n }\n return isInteger(s[i+1:])\n } else if c < '0' || c > '9' {\n return false\n }\n }\n return false\n}\n\nfunc isInteger(s string) bool {\n if len(s) == 0 {\n return false\n }\n if s[0] == '+' || s[0] == '-' {\n s = s[1:]\n }\n if len(s) == 0 {\n return false\n }\n for _, c := range s {\n if c < '0' || c > '9' {\n return false\n }\n }\n return true\n}
原文地址: https://www.cveoy.top/t/topic/pT1G 著作权归作者所有。请勿转载和采集!