Ora, ovviamente, potrei scrivere la mia espressione regolare per gestire entrambi i casi, ad esempio regexp.Compile("[a-zA-Z]"), ma la mia espressione regolare è costruita da una stringa data dall'utente:
reg, err := regexp.Compile(strings.Replace(s.Name, " ", "[ \\._-]", -1))
Dov'è s.Nameil nome. Potrebbe essere qualcosa come "North by Northwest". Ora, la soluzione più evidente per me sarebbe passare attraverso ogni carattere di s.Namee scrivere '[nN]' per ogni lettera:
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]))
}
}
Ma credo che questa sia una soluzione piuttosto non elegante. La velocità non è davvero un problema, ma ho bisogno di sapere se c'è un altro modo.