🦁

Go で文字種をチェックする

2020/10/28に公開

アルファベット大文字、小文字、その他を判定するサンプル実装

package main

import "fmt"

func main() {
	upperA := rune('A')
	upperZ := rune('Z')
	lowerA := rune('a')
	lowerZ := rune('z')
	for _, c := range "abcXYZ32あ&" {
		if c >= upperA && c <= upperZ {
			fmt.Println("大文字アルファベット", string(c))
		} else if c >= lowerA && c <= lowerZ {
			fmt.Println("小文字アルファベット", string(c))
		} else {
			fmt.Println("その他の文字", string(c))
		}
	}
}

種別を文字列から一文字ずつ判定する

package main

import (
	"fmt"
	"unicode"
)

func main() {
	for _, c := range "abcd%23SZXあ後" {
		fmt.Printf("For %q:\n", c)
		if unicode.IsControl(c) {
			fmt.Println("\tis control rune")
		}
		if unicode.IsDigit(c) {
			fmt.Println("\tis digit rune")
		}
		if unicode.IsGraphic(c) {
			fmt.Println("\tis graphic rune")
		}
		if unicode.IsLetter(c) {
			fmt.Println("\tis letter rune")
		}
		if unicode.IsLower(c) {
			fmt.Println("\tis lower case rune")
		}
		if unicode.IsMark(c) {
			fmt.Println("\tis mark rune")
		}
		if unicode.IsNumber(c) {
			fmt.Println("\tis number rune")
		}
		if unicode.IsPrint(c) {
			fmt.Println("\tis printable rune")
		}
		if !unicode.IsPrint(c) {
			fmt.Println("\tis not printable rune")
		}
		if unicode.IsPunct(c) {
			fmt.Println("\tis punct rune")
		}
		if unicode.IsSpace(c) {
			fmt.Println("\tis space rune")
		}
		if unicode.IsSymbol(c) {
			fmt.Println("\tis symbol rune")
		}
		if unicode.IsTitle(c) {
			fmt.Println("\tis title case rune")
		}
		if unicode.IsUpper(c) {
			fmt.Println("\tis upper case rune")
		}
	}
}

Discussion