Ahora, por supuesto, podría escribir mi expresión regular para manejar ambos casos, por ejemplo regexp.Compile("[a-zA-Z]")
, pero mi expresión regular se construye a partir de una cadena dada por el usuario:
reg, err := regexp.Compile(strings.Replace(s.Name, " ", "[ \\._-]", -1))
¿Dónde s.Name
está el nombre? Que podría ser algo así como "North by Northwest". Ahora, la solución más aparente para mí sería recorrer cada carácter de s.Name
y escribir '[nN]' para cada letra:
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]))
}
}
Pero creo que esta es una solución bastante poco elegante. La velocidad no es realmente una preocupación, pero necesito saber si hay otra forma.