小智 41
你可以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
}
Run Code Online (Sandbox Code Playgroud)
或者如果您的范围有限,例如'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
}
Run Code Online (Sandbox Code Playgroud)
或者如果您的范围有限,例如'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
}
Run Code Online (Sandbox Code Playgroud)
假设您只是在寻找 ascii 字母,您通常会看到这是使用 alpha 字符类[[: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)
}
}
Run Code Online (Sandbox Code Playgroud)
https://play.golang.org/p/lT9Fki7tt7
这是我做的方式:
import "strings"
const alpha = "abcdefghijklmnopqrstuvwxyz"
func alphaOnly(s string) bool {
for _, char := range s {
if !strings.Contains(alpha, strings.ToLower(string(char))) {
return false
}
}
return true
}
Run Code Online (Sandbox Code Playgroud)
您也可以简洁地执行此操作,而无需导入任何包
func isLetter(c rune) bool {
return ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z')
}
func isWord(s string) bool {
for _, c := range s {
if !isLetter(c) {
return false
}
}
return true
}
Run Code Online (Sandbox Code Playgroud)