Jetzt könnte ich natürlich meinen regulären Ausdruck schreiben, um beide Fälle zu behandeln, wie z. B. regexp.Compile("[a-zA-Z]")
, aber mein regulärer Ausdruck besteht aus einer vom Benutzer angegebenen Zeichenfolge:
reg, err := regexp.Compile(strings.Replace(s.Name, " ", "[ \\._-]", -1))
Wo s.Name
ist der Name? Das könnte so etwas wie "North by Northwest" sein. Die naheliegendste Lösung für mich wäre, durch jedes Zeichen zu gehen s.Name
und für jeden Buchstaben '[nN]' zu schreiben:
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]))
}
}
Ich halte dies jedoch für eine eher nicht elegante Lösung. Geschwindigkeit ist nicht wirklich ein Problem, aber ich muss wissen, ob es einen anderen Weg gibt.