• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

【转】 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

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap