2015-11-13 2 views
4

у меня есть большой массив строк, таких, как этот один:Сделать первую букву слова в верхнем регистре в строке

«КОМПЛЕКСНЫЕ ИНЖЕНЕРНЫЕ 5 года (BSC с годом в промышленности)»

Я хочу, чтобы заработать первую букву слов и сделать остальные слова строчными. Таким образом, «INTEGRATED» станет «интегрированным».

Второй гаечный ключ в работах - я хочу исключение из нескольких слов, таких как 'и', 'in', 'a', 'with'.

Так в приведенном выше примере станет:

Integrated Engineering 5 Год (КБС с годом в промышленности).

Как бы это сделать в Go? Я могу закодировать цикл/массивы, чтобы управлять изменением, но фактическое преобразование строк - это то, с чем я борюсь.

ответ

20

Существует встроенная функция в пакете строки называется Названием

см https://play.golang.org/p/07dl3hMuGH

+1

, вероятно, вы хотите сначала ввести текст в нижний регистр перед вызовом функции «Название». – boug

+1

Как ответ отвечает на исключения, упомянутые в вопросе? (и, в a, с) – tomasz

-6

Ну, вы не указали язык, который используете, поэтому я дам вам общий ответ. У вас есть массив с кучей строк. Сначала я бы сделал весь строчный строчный регистр, а затем просто пропустил каждый символ в строке (запишите первый, оставив нижний регистр). На этом этапе вам нужно искать пространство, это поможет вам разделить слова в каждой строке. Первый символ после нахождения пробела, очевидно, является другим словом и должен быть капитализирован. Вы можете проверить, что следующее слово отсутствует, и с помощью «Или а».

Я не на компьютере, так что я не могу дать конкретный пример, но я надеюсь, что это получает в правильном направлении, по крайней мере

+0

Он использует Go. Здесь основным признаком является тег, хотя он также упоминается в вопросе. – tomasz

5

Вы можете использовать regular expressions для выполнения этой задачи. A \w+ regexp будет соответствовать всем словам, затем с помощью Regexp.ReplaceAllStringFunc вы можете заменить слова предполагаемым контентом, пропуская стоп-слова. В вашем случае также будут полезны strings.ToLower и .

Пример:

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

Вы можете легко адаптировать это к вашему массив строк.

Смежные вопросы