2016-07-24 31 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 
} 

,或者如果你有有限的範圍例如「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 
} 
+0

有沒有提供一組函數來進行字符串檢查的庫? – Casper

+1

@CasperLI:僅舉幾例:字符串,fmt,正則表達式,strconv,unicode,unicode/utf8,unicode/utf16,路徑/文件路徑,網址,字節,bufio,編碼/ json,時間... – 2016-07-25 02:21:54

+2

@ CasperLI(自由地)引用Rob Pike的話:「一點點複製比一點點依賴更好」。 –

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

實現爲正則表達式
相關問題