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.
Sie können
(?i)
am Anfang des Musters ein hinzufügen , um die Groß- und Kleinschreibung nicht zu berücksichtigen.Referenz
quelle
Ich bin mit Go nicht allzu vertraut, aber gemäß diesem Beispiel: http://play.golang.org/p/WgpNhwWWuW
Sie müssen Ihrer Regex-Anweisung das Präfix voranstellen
(?i)
quelle
Verwenden Sie die
i
Flagge. Unter Angabe der Spitze Dokumentation :quelle