もちろん、のように両方のケースを処理する正規表現を書くこともできますregexp.Compile("[a-zA-Z]")
が、正規表現はユーザーが指定した文字列から作成されます。
reg, err := regexp.Compile(strings.Replace(s.Name, " ", "[ \\._-]", -1))
s.Name
名前はどこですか。これは「NorthbyNorthwest」のようなものである可能性があります。さて、私にとって最も明白な解決策はs.Name
、の各文字をウォークスルーし、各文字に「[nN]」と書くことです。
for i := 0; i < len(s.Name); i++ {
if s.Name[i] == " " {
fmt.Fprintf(str, "%s[ \\._-]", str);
} else {
fmt.Fprintf(str, "%s[%s%s]", str, strings.ToLower(s.Name[i]), strings.ToUpper(s.Name[i]))
}
}
しかし、これはかなりエレガントではない解決策だと思います。速度はそれほど問題ではありませんが、別の方法があるかどうかを知る必要があります。