web-dev-qa-db-ja.com

文字列に特殊文字があるかどうか、または文字がGoLangに特殊文字であるかどうかを確認する方法

入力から文字列を読み取った後、その中に特殊文字があるかどうかを確認する必要があります

11
Kipz

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")
    }
}
14
Joshua

特殊文字の定義に応じて、最も簡単な解決策はおそらくfor range文字列をループし(バイトの代わりにルーンを生成します)、ルーンごとに、許可/禁止ルーンのリストにあるかどうかを確認します。

文字列、バイト、ルーン文字の関係の詳細については、 文字列、バイト、ルーン文字、Goの文字 を参照してください。

遊び場の例

3
Elwinar