Ответ 1
Во встроенном пакете strings
есть функция Title
.
пожалуйста, смотрите https://play.golang.org/p/07dl3hMuGH
s := "INTEGRATED ENGINEERING 5 Year (BSC with a Year in Industry)"
fmt.Println(strings.Title(strings.ToLower(s)))
У меня есть большой массив строк, таких как этот:
'ИНТЕГРИРОВАННАЯ ИНЖЕНЕРИЯ 5 лет (BSC с годом в промышленности)'
Я хочу загладить первую букву слов и сделать остальные слова строчными. Таким образом, "INTEGRATED" станет "интегрированным".
Второй гаечный ключ в работе - я хочу исключение из нескольких слов, таких как 'и', 'in', 'a', 'with'.
Таким образом, приведенный выше пример станет следующим:
Интегрированная инженерия 5 лет (Bsc с годом в промышленности).
Как мне это сделать в Go? Я могу закодировать цикл/массивы для управления изменением, но фактическое преобразование строк - это то, с чем я борюсь.
Во встроенном пакете strings
есть функция Title
.
пожалуйста, смотрите https://play.golang.org/p/07dl3hMuGH
s := "INTEGRATED ENGINEERING 5 Year (BSC with a Year in Industry)"
fmt.Println(strings.Title(strings.ToLower(s)))
Вы можете использовать регулярные выражения для этой задачи. A \w+
regexp будет соответствовать всем словам, затем, используя Regexp.ReplaceAllStringFunc
, вы можете заменить слова предполагаемым контентом, пропуская стоп-слова. В вашем случае также будут полезны strings.ToLower
и strings.Title
.
Пример:
str := "INTEGRATED ENGINEERING 5 Year (BSC with a Year in Industry)"
// Function replacing words (assuming lower case input)
replace := func(word string) string {
switch word {
case "with", "in", "a":
return word
}
return strings.Title(word)
}
r := regexp.MustCompile(`\w+`)
str = r.ReplaceAllStringFunc(strings.ToLower(str), replace)
fmt.Println(str)
// Output:
// Integrated Engineering 5 Year (Bsc with a Year in Industry)
https://play.golang.org/p/uMag7buHG8
Вы можете легко адаптировать это к вашему массиву строк.
Ну, вы не указали язык, который используете, поэтому я дам вам общий ответ. У вас есть массив с кучей строк. Сначала я бы сделал весь строчный строчный регистр, а затем просто пропустил каждый символ в строке (запишите первый, оставив нижний регистр). На этом этапе вам нужно искать пространство, это поможет вам разделить слова в каждой строке. Первый символ после нахождения пробела, очевидно, является другим словом и должен быть капитализирован. Вы можете проверить, что следующее слово отсутствует, а также с помощью "Или".
Я не на компьютере, поэтому я не могу дать конкретный пример, но я надеюсь, что это будет в правильном направлении, по крайней мере