時代の発展に伴い、私たちはデータの検証、特にユーザー入力の検証にますます注目しています。言語検証においては、入力された文字がすべて漢字であるかどうかをいかに正確に判定するかが重要な課題となっている。 golang では、unicode パッケージと regexp パッケージを使用してこの要件を達成できます。
1. Unicode パッケージ
unicode パッケージは、Unicode に対する一連のコア サポートを提供します。このパッケージの関数を使用すると、文字が漢字かどうかを正確に判断できます。
このうち、unicode.Is()関数は、文字が指定された文字セットに属するかどうかを判定することができ、指定された文字セットが中国語の文字セットの場合、その文字が漢字であるかどうかを判定することができます。 。
では、文字列が完全に中国語の文字で構成されているかどうかを判断するにはどうすればよいでしょうか?文字列内の各文字を判断することができますが、すべての文字が漢字である場合にのみ、その文字列がすべて漢字で構成されていると判断できます。
サンプル コードは次のとおりです。
package main import ( "fmt" "unicode" ) func isAllChinese(str string) bool { for _, c := range str { if !unicode.Is(unicode.Scripts["Han"], c) { return false } } return true } func main() { testStr := "我是中文字符" if isAllChinese(testStr) { fmt.Println(testStr, "is all Chinese characters") } else { fmt.Println(testStr, "is not all Chinese characters") } }
isAll Chinese() 関数を呼び出すことにより、指定された文字列が完全に中国語の文字で構成されているかどうかを判断できます。
2. regexp パッケージ
正規表現は文字列の照合に使用されるツールで、Golang は正規表現の照合を実装するための regexp パッケージを提供しています。
このパッケージの正規表現を使用して、文字列が完全に中国語の文字で構成されているかどうかを判断できます。中国語の Unicode 値の範囲は u4e00 ~ u9fa5 であるため、Unicode 正規表現を使用して中国語の文字と一致させることができます。
サンプル コードは次のとおりです。
package main import ( "fmt" "regexp" ) func isAllChinese(str string) bool { reg := regexp.MustCompile("^[u4e00-u9fa5]+$") return reg.MatchString(str) } func main() { testStr := "我是中文字符" if isAllChinese(testStr) { fmt.Println(testStr, "is all Chinese characters") } else { fmt.Println(testStr, "is not all Chinese characters") } }
isAll Chinese() 関数を呼び出すことにより、指定された文字列がすべて中国語の文字で構成されているかどうかを確認することもできます。
概要:
上記の 2 つの方法はどちらも、文字列が完全に中国語の文字で構成されているかどうかを判断するために使用できます。 unicode パッケージを使用するとパフォーマンスが向上しますが、より柔軟な判断が必要な場合は、regexp パッケージを使用できます。
同時に、入力内容にスペースや句読点などの文字が含まれている場合には、漢字のみで構成されているとは判断できない場合もありますので、注意が必要です。したがって、実際のアプリケーションでは、特定のシナリオに従ってターゲットを絞った検証が実行されます。
以上がgolangで入力がすべて漢字かどうかを確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。