我正在try 判断用户名是否只包含字母字符.在围棋里 checkout 的惯用方式是什么?

推荐答案

您可以使用类似以下工作示例代码的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
}

Go相关问答推荐

GoLang Mochi MQTT服务器(带Python Paho MQTT客户端SSL身份验证失败

埃拉托塞尼筛:加快交叉关闭倍数步骤

为什么 `go mod` 占用了另一个磁盘上的空间而不是我的 GOPATH?

Go:为什么我不能比较 net.Addr

通过 Terraform 中的 MapNestedAtribute 进行迭代

这是泛型的有效用例吗?

GitHub 中 REST API 的 aws 凭证问题

golang:解组动态 YAML 注释

如何在 Go 中编写示例测试?

如何仅提取时间作为持续时间

Dockerfile 问题 - 为什么找不到二进制 dlv - 没有这样的文件或目录

函数超时和 goroutine 泄漏

使用 `didip/tollbooth` 限制每小时最大请求数

如何使用 math/big 对 bigInt 进行取模?

使用 image/jpeg 编码导致图像饱和/错误像素

为什么import和ImportSpec之间可以出现多行注释,而PackageName和ImportPath之间不能出现?

如何正确判断 io.Reader 是否为零?

不理解切片和指针

从 map 返回空数组而不是空字符串数组

Go 错误:Is() 和 As() 声称是递归的,是否有任何类型实现错误接口并支持这种递归 - 无错误?