Тепер, звичайно, я міг би написати свій регулярний вираз для обробки обох випадків, наприклад regexp.Compile("[a-zA-Z]"), але мій регулярний вираз будується із рядка, заданого користувачем:
reg, err := regexp.Compile(strings.Replace(s.Name, " ", "[ \\._-]", -1))
Де s.Nameце ім’я. Що може бути чимось на кшталт "Північ північним заходом". Зараз найбільш очевидним рішенням для мене було б пройти кожен символ s.Nameі написати '[nN]' для кожної літери:
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]))
}
}
Але я вважаю, що це досить неелегантне рішення. Швидкість насправді не турбує, але мені потрібно знати, чи є інший спосіб.