如何检查一个字符串是否只包含 Go 中的字母字符?

新手上路,请多包涵

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

原文由 Casper 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 823
2 个回答

你可以使用 unicode.IsLetter 像这样的工作示例代码:

 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
}

或者如果您的范围有限,例如 ‘a’..‘z’ 和 ‘A’..‘Z’,您可以使用此工作示例代码:

 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

}

或者如果您的范围有限,例如 ‘a’..‘z’ 和 ‘A’..‘Z’,您可以使用此工作示例代码:

 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
}

原文由 user6169399 发布,翻译遵循 CC BY-SA 4.0 许可协议

假设你只是在寻找 ascii 字母,你通常会看到它作为正则表达式使用字母字符类 [[:alpha:]] 或等效的 [A-Za-z]

 isAlpha := regexp.MustCompile(`^[A-Za-z]+$`).MatchString

for _, username := range []string{"userone", "user2", "user-three"} {
    if !isAlpha(username) {
        fmt.Printf("%q is not valid\n", username)
    }
}

https://play.golang.org/p/lT9Fki7tt7

原文由 JimB 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题