43 lines
1.5 KiB
Go
43 lines
1.5 KiB
Go
package main
|
|
|
|
import (
|
|
"regexp"
|
|
"strings"
|
|
)
|
|
|
|
// Нормализует текстовый буфер. Убирает начальные и конечные пробельные символы, заменяет сносы строк пробелами, удаляет
|
|
// знаки препинания, схлопывает повторяющиеся пробелы в один символ.
|
|
func nString(buf string) string {
|
|
// Убираем пробелы вначале текстового буфера и в конце.
|
|
buf = strings.Trim(buf, "\n\r\t ")
|
|
|
|
// Убираем знаки препинания.
|
|
for _, pMark := range pMarks {
|
|
buf = strings.ReplaceAll(buf, pMark, "")
|
|
}
|
|
|
|
for _, pMark := range pMarks2 {
|
|
buf = strings.ReplaceAll(buf, pMark, "")
|
|
}
|
|
|
|
// Замещаем сносы строки пробелами.
|
|
for _, newline := range newLines {
|
|
buf = strings.ReplaceAll(buf, newline, " ")
|
|
}
|
|
|
|
// Схлопываем повторяющиеся пробелы.
|
|
buf = regexp.MustCompile(`\s+`).ReplaceAllString(buf, " ")
|
|
|
|
return buf
|
|
}
|
|
|
|
// Обёртка для nString, возвращает нормализованную строку в нижнем регистре.
|
|
func nStringLower(buf string) string {
|
|
return strings.ToLower(nString(buf))
|
|
}
|
|
|
|
// Обёртка для nString, возвращает нормализованную строку в верхнем регистре.
|
|
func nStringUpper(buf string) string {
|
|
return strings.ToUpper(nString(buf))
|
|
}
|