Tất nhiên, bây giờ tôi có thể viết biểu thức chính quy của mình để xử lý cả hai trường hợp, chẳng hạn như regexp.Compile("[a-zA-Z]")
, nhưng biểu thức chính quy của tôi được xây dựng từ một chuỗi do người dùng cung cấp:
reg, err := regexp.Compile(strings.Replace(s.Name, " ", "[ \\._-]", -1))
Trong trường hợp s.Name
là tên. Đó có thể là một cái gì đó giống như 'North by Northwest'. Bây giờ, giải pháp rõ ràng nhất đối với tôi là xem qua từng ký tự s.Name
và viết '[nN]' cho mỗi chữ cái:
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]))
}
}
Nhưng tôi cảm thấy đây là một giải pháp không thanh lịch. Tốc độ thực sự không phải là vấn đề đáng lo ngại, nhưng tôi cần biết nếu có cách khác.