String 如何检查字符串中是否有特殊字符,或字符是否是GoLang中的特殊字符

String 如何检查字符串中是否有特殊字符,或字符是否是GoLang中的特殊字符,string,go,special-characters,String,Go,Special Characters,从输入中读取字符串后,我需要检查其中是否有特殊字符根据您对特殊字符的定义,最简单的解决方案可能是在字符串上执行for range循环(产生符文而不是字节),对于每个符文,检查它是否在你的允许/禁止符文列表中 有关字符串、字节和符文之间关系的更多信息,请参阅 您可以使用strings.ContainsAny查看符文是否存在: package main import ( "fmt" "strings" ) func main() { fmt.Println(strings.Conta

从输入中读取字符串后,我需要检查其中是否有特殊字符

根据您对特殊字符的定义,最简单的解决方案可能是在字符串上执行
for range
循环(产生符文而不是字节),对于每个符文,检查它是否在你的允许/禁止符文列表中

有关字符串、字节和符文之间关系的更多信息,请参阅


您可以使用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")
    }
}
主程序包
进口(
“fmt”
“字符串”
)
func main(){
f:=func(r符文)bool{
返回r<'A'| r>'z'
}
if strings.IndexFunc(“HelloWorld”,f)!=-1{
fmt.Println(“找到特殊字符”)
}
if strings.IndexFunc(“Hello World”,f)!=-1{
fmt.Println(“找到特殊字符”)
}
}

我最后做了类似的事情

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
            }
        }

它可能有任何错误,因为我将它用于特定的内容,所以我必须编辑它才能发布到这里

您想要使用unicode软件包,它有一个很好的功能来检查符号

主程序包
进口(
“fmt”
“unicode”
)
func hasSymbol(str字符串)bool{
对于u,字母:=范围str{
if unicode.IsSymbol(字母){
返回真值
}
}
返回错误
}
func main(){
var strs=[]字符串{
“敏捷的棕色狐狸”,

“A+quick_Brown你能详细解释一下golang中的特殊字符是什么意思吗?像这样的字符:“/”、“-”、“|”、“&”如果我已经有了一个包含允许字符的字符串,如何将其转换为符文?谢谢!糟糕的是,我把示例搞糟了。请看新的更正示例。我最后检查了所有不是ABC…Z Th的内容anks!对字符串进行迭代需要做很多额外的工作。这不允许使用大写字符,带有变音符号的字符,如
é
ñ
ç
,非拉丁语脚本。基本上任何非英语的字符都不会通过。这适用于unicode字符,如+,@Nikhita,基于Kipz对主要问题的评论不过,他并不担心逃跑的角色。问题中也没有提到他们。这可能是解决问题的最好办法。
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.