dptn69182
2016-07-24 16:40
浏览 2.9k
已采纳

如何在Go中检查字符串是否仅包含字母字符?

I am trying to check the username whether is only containing alphabetic characters. What is the idiomatic way to check it in Go?

图片转代码服务由CSDN问答提供 功能建议

我正在尝试检查用户名是否仅包含字母字符。 在Go中检查它的惯用方式是什么?

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

4条回答 默认 最新

  • dongpangbu4016 2016-07-24 16:55
    最佳回答

    you may use unicode.IsLetter like this working sample code:

    package main
    
    import "fmt"
    import "unicode"
    
    func IsLetter(s string) bool {
        for _, r := range s {
            if !unicode.IsLetter(r) {
                return false
            }
        }
        return true
    }
    func main() {
        fmt.Println(IsLetter("Alex")) // true
        fmt.Println(IsLetter("123"))  // false
    }
    

    or if you have limited range e.g. 'a'..'z' and 'A'..'Z', you may use this working sample code:

    package main
    
    import "fmt"
    
    func IsLetter(s string) bool {
        for _, r := range s {
            if (r < 'a' || r > 'z') && (r < 'A' || r > 'Z') {
                return false
            }
        }
        return true
    }
    func main() {
        fmt.Println(IsLetter("Alex"))  // true
        fmt.Println(IsLetter("123 a")) // false
    
    }
    

    or if you have limited range e.g. 'a'..'z' and 'A'..'Z', you may use this working sample code:

    package main
    
    import "fmt"
    import "regexp"
    
    var IsLetter = regexp.MustCompile(`^[a-zA-Z]+$`).MatchString
    
    func main() {
        fmt.Println(IsLetter("Alex")) // true
        fmt.Println(IsLetter("u123")) // false
    }
    
    评论
    解决 无用
    打赏 举报
查看更多回答(3条)

相关推荐 更多相似问题