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

时间:2015-08-12 09:57:03

标签: string go special-characters

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

4 个答案:

答案 0 :(得分:11)

你可以使用strings.ContainsAny来查看符文是否存在:

WebElement description = driver.findElement(By.xpath("//div[@class='atb-delivery-accordions']/p"));

或者如果你想检查是否只有ASCII字符,你可以使用strings.IndexFunc:

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", ",|"))
}

答案 1 :(得分:3)

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

有关字符串,字节和符文之间关系的更多信息,请参阅Strings, bytes, runes and characters in Go

Playground example

答案 2 :(得分:-1)

你想使用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.

答案 3 :(得分:-2)

我最终做了类似这样的事情

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

它可能有任何错误,因为我将它用于特定的东西,我必须编辑以在此处发布