2016-07-24 10 views

ответ

16

вы можете использовать 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 
} 

или если вы ограничены в диапазоне, например, «А» .. «Z» и «А» .. «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 

} 

или если вы имеете ограниченный диапазон например 'А' .. '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 
} 
+0

Есть ли библиотека, которая предоставляет набор функций для проверки строк? – Casper

+1

@CasperLI: назвать несколько: строки, fmt, regexp, strconv, unicode, unicode/utf8, unicode/utf16, путь/путь к файлу, net/url, bytes, bufio, encoding/json, time, ... –

+2

@ CasperLI To (свободно) цитата Роб Пайк: «Немного копировать лучше, чем немного больше зависимости». –

2

Вот как я это сделать:

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 
} 
+1

'é' является алфавитным символом. – dolmen

3

Предполагая вы только ищете 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