如何检查字符串中是否有特殊字符或字符是否为GoLang中的特殊字符
How to check if there is a special character in string or if a character is a special character in GoLang
从输入中读取一个字符串后,我需要检查其中是否有特殊字符
根据您对 特殊字符 的定义,最简单的解决方案可能是对字符串执行 for range
循环(产生符文而不是字节),并且对于每个符文,检查它是否在您的 allowed/forbidden 符文列表中。
有关字符串、字节和符文之间关系的更多信息,请参见Strings, bytes, runes and characters in Go。
您可以使用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")
}
}
我最终做了这样的事情
alphabet := "abcdefghijklmnopqrstuvwxyz"
alphabetSplit := strings.Split(alphabet, "")
inputLetters := strings.Split(input, "")
for index, value := range inputLetters {
special:=1
for _, char :=range alphabetSplit{
if char == value {
special = 0
break
}
}
它可能有任何问题,因为我将它用于特定的东西,所以我不得不在此处将其编辑为 post
您想使用 unicode 包,它有一个很好的符号检查功能。
https://golang.org/pkg/unicode/#IsSymbol
package main
import (
"fmt"
"unicode"
)
func hasSymbol(str string) bool {
for _, letter := range str {
if unicode.IsSymbol(letter) {
return true
}
}
return false
}
func main() {
var strs = []string {
"A quick brown fox",
"A+quick_brown<fox",
}
for _, str := range strs {
if hasSymbol(str) {
fmt.Printf("String '%v' contains symbols.\n", str)
} else {
fmt.Printf("String '%v' did not contain symbols.\n", str)
}
}
}
这将提供以下输出:
String 'A quick brown fox' did not contain symbols.
String 'A+quick_brown<fox' contains symbols.
从输入中读取一个字符串后,我需要检查其中是否有特殊字符
根据您对 特殊字符 的定义,最简单的解决方案可能是对字符串执行 for range
循环(产生符文而不是字节),并且对于每个符文,检查它是否在您的 allowed/forbidden 符文列表中。
有关字符串、字节和符文之间关系的更多信息,请参见Strings, bytes, runes and characters in Go。
您可以使用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")
}
}
我最终做了这样的事情
alphabet := "abcdefghijklmnopqrstuvwxyz"
alphabetSplit := strings.Split(alphabet, "")
inputLetters := strings.Split(input, "")
for index, value := range inputLetters {
special:=1
for _, char :=range alphabetSplit{
if char == value {
special = 0
break
}
}
它可能有任何问题,因为我将它用于特定的东西,所以我不得不在此处将其编辑为 post
您想使用 unicode 包,它有一个很好的符号检查功能。
https://golang.org/pkg/unicode/#IsSymbol
package main
import (
"fmt"
"unicode"
)
func hasSymbol(str string) bool {
for _, letter := range str {
if unicode.IsSymbol(letter) {
return true
}
}
return false
}
func main() {
var strs = []string {
"A quick brown fox",
"A+quick_brown<fox",
}
for _, str := range strs {
if hasSymbol(str) {
fmt.Printf("String '%v' contains symbols.\n", str)
} else {
fmt.Printf("String '%v' did not contain symbols.\n", str)
}
}
}
这将提供以下输出:
String 'A quick brown fox' did not contain symbols.
String 'A+quick_brown<fox' contains symbols.