Maintenant, bien sûr, je pourrais écrire mon expression régulière pour gérer les deux cas, comme par exemple regexp.Compile("[a-zA-Z]")
mais mon expression régulière est construite à partir d'une chaîne de caractères donnée par l'utilisateur :
reg, err := regexp.Compile(strings.Replace(s.Name, " ", "[ \\._-]", -1))
Où s.Name
est le nom. Qui pourrait être quelque chose comme "North by Northwest". Maintenant, la solution la plus évidente pour moi serait de passer en revue chaque personnage de s.Name
et écrivez '[nN]' pour chaque lettre :
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]))
}
}
Mais je pense que c'est une solution peu élégante. La vitesse n'est pas vraiment un problème, mais j'ai besoin de savoir s'il existe un autre moyen.