generated from VLADIMIR/template
fix filenames
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
package string_tools
|
||||
|
||||
import (
|
||||
"regexp"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var (
|
||||
replacer = strings.NewReplacer(
|
||||
"а", "a",
|
||||
"б", "b",
|
||||
"в", "v",
|
||||
"г", "g",
|
||||
"д", "d",
|
||||
"е", "e",
|
||||
"ё", "yo",
|
||||
"ж", "zh",
|
||||
"з", "z",
|
||||
"и", "i",
|
||||
"й", "y",
|
||||
"к", "k",
|
||||
"л", "l",
|
||||
"м", "m",
|
||||
"н", "n",
|
||||
"о", "o",
|
||||
"п", "p",
|
||||
"р", "r",
|
||||
"с", "s",
|
||||
"т", "t",
|
||||
"у", "u",
|
||||
"ф", "f",
|
||||
"х", "h",
|
||||
"ц", "ts",
|
||||
"ч", "ch",
|
||||
"ш", "sh",
|
||||
"щ", "sch",
|
||||
"ъ", "",
|
||||
"ы", "y",
|
||||
"ь", "",
|
||||
"э", "e",
|
||||
"ю", "yu",
|
||||
"я", "ya",
|
||||
" ", "_",
|
||||
)
|
||||
)
|
||||
|
||||
// Transliterate выполняет транслитерацию русского текста в латиницу,
|
||||
// заменяет пробелы на _, удаляет все остальные символы, кроме цифр (знаки препинания и т.д.)
|
||||
func Transliterate(text string) string {
|
||||
|
||||
// Приводим к нижнему регистру и транслитерируем
|
||||
result := replacer.Replace(strings.ToLower(text))
|
||||
|
||||
// Удаляем все символы, кроме букв латиницы, подчеркивания и цифр
|
||||
reg := regexp.MustCompile(`[^a-z0-9_]`)
|
||||
result = reg.ReplaceAllString(result, "")
|
||||
|
||||
// Удаляем множественные подчеркивания (опционально)
|
||||
regMulti := regexp.MustCompile(`_+`)
|
||||
result = regMulti.ReplaceAllString(result, "_")
|
||||
|
||||
// Удаляем подчеркивания в начале и конце строки (опционально)
|
||||
result = strings.Trim(result, "_")
|
||||
|
||||
return result
|
||||
}
|
||||
Reference in New Issue
Block a user