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 }