入力から文字列を読み取った後、その中に特殊文字があるかどうかを確認する必要があります
Strings.ContainsAnyを使用して、ルーンが存在するかどうかを確認できます。
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Println(strings.ContainsAny("Hello World", ",|"))
fmt.Println(strings.ContainsAny("Hello, World", ",|"))
fmt.Println(strings.ContainsAny("Hello|World", ",|"))
}
または、ASCII文字のみがあるかどうかを確認する場合は、strings.IndexFuncを使用できます。
package main
import (
"fmt"
"strings"
)
func main() {
f := func(r rune) bool {
return r < 'A' || r > 'z'
}
if strings.IndexFunc("HelloWorld", f) != -1 {
fmt.Println("Found special char")
}
if strings.IndexFunc("Hello World", f) != -1 {
fmt.Println("Found special char")
}
}
特殊文字の定義に応じて、最も簡単な解決策はおそらくfor range
文字列をループし(バイトの代わりにルーンを生成します)、ルーンごとに、許可/禁止ルーンのリストにあるかどうかを確認します。
文字列、バイト、ルーン文字の関係の詳細については、 文字列、バイト、ルーン文字、Goの文字 を参照してください。