もちろん、のように両方の場合を処理する正規表現を書くこともできます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]))
}
}
しかし、これはかなりエレガントではない解決策だと思います。速度はそれほど問題ではありませんが、別の方法があるかどうかを知る必要があります。