Şimdi, tabii ki, ben regexp.Compile("[a-zA-Z]")
gibi hem davalarını benim düzenli ifade yazabilirsiniz, ama benim düzenli ifade kullanıcı tarafından verilen bir dize inşa edilmiştir:Git'te büyük/küçük harf duyarlı bir normal ifadeyi nasıl yaparım?
reg, err := regexp.Compile(strings.Replace(s.Name, " ", "[ \\._-]", -1))
s.Name
adıdır. Hangi 'Northwest North' gibi bir şey olabilir. Şimdi, benim için en belirgin çözüm her harf için '[nN]' s.Name
her karakterin içinden yürümek ve yazmayı olacaktır:
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]))
}
}
Ama bu oldukça olmayan zarif çözüm olduğunu düşünüyoruz. Hız gerçekten bir endişe değil, başka bir yolun olup olmadığını bilmem gerek.
Ama bu pek çok veri varken, çok yavaş buldum. Regexp.Match içinde unicode.SimpleFold çağrılması nedeniyle, bu yüzden harfleri üst ve sonra regexp eşleştirmek için kullanarak değiştirmenizi öneririz. Bu hızdır. regexp'in -f Kod/Çatınızın 1271.94s KULLANICI ÖRNEK XCMP/bin/otacmp -o BSP_2.2.0.html -f BSP/çerçeveler görmezden '' ' #by (i?): Aşağıdaki zaman veridir 7.32s sistemi 97% işlemci 21: 54.95 toplam #By toUpper ve eşleşme XCMP/bin/otacmp -o BSP_2.2.0.html -f BSP/çerçeveler -f Kod/çerçeveler 263.87s kullanıcı 8.99s sistem 110% cpu 4 : 06.44 toplam '' ' – QJGui