• Go 实现判断变量是否为合法数字 IsNumeric 算法


    【转】 http://www.syyong.com/Go/Go-to-determine-whether-the-variable-is-a-legal-digital-algorithm.html

    IsNumeric — 检测变量是否为数字或数字字符串。

    支持小数点、十六进制(hex)、科学计数法。

    is_numeric

    // is_numeric()
    func IsNumeric(val interface{}) bool {
        switch val.(type) {
        case int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64:
        case float32, float64, complex64, complex128:
            return true
        case string:
            str := val.(string)
            if str == "" {
                return false
            }
            // Trim any whitespace
            str = strings.Trim(str, " \t\n\r\v\f")
            if str[0] == '-' || str[0] == '+' {
                if len(str) == 1 {
                    return false
                }
                str = str[1:]
            }
            // hex
            if len(str) > 2 && str[0] == '0' && (str[1] == 'x' || str[1] == 'X') {
                for _, h := range str[2:] {
                    if !((h >= '0' && h <= '9') || (h >= 'a' && h <= 'f') || (h >= 'A' && h <= 'F')) {
                        return false
                    }
                }
                return true
            }
            // 0-9,Point,Scientific
            p, s, l := 0, 0, len(str)
            for i, v := range str {
                if v == '.' { // Point
                    if p > 0 || s > 0 || i+1 == l {
                        return false
                    }
                    p = i
                } else if v == 'e' || v == 'E' { // Scientific
                    if i == 0 || s > 0 || i+1 == l {
                        return false
                    }
                    s = i
                } else if v < '0' || v > '9' {
                    return false
                }
            }
            return true
        }
    
        return false
    }

    Github地址

    https://github.com/syyongx/php2go

  • 相关阅读:
    计算机英语
    NSQ学习记录
    Java学习记录-注解
    VS插件开发

    双链表
    顺序表
    顺序队列
    顺序栈

  • 原文地址:https://www.cnblogs.com/syyong/p/8940902.html
Copyright © 2020-2023  润新知