2015-11-13 57 views
4

我有一个大的字符串数组像这样的的第一个字母:使字符串中的大写单词

“综合工程5年(BSC在行业一年)”我想利用单词的第一个字母,并使其余的单词小写。所以'集成'将成为'综合'。

作品中的第二个扳手 - 我想要一个例外,如'和','','','','与'。

所以上面的例子将成为:

综合工程5年(BSC在行业一年)。

我该怎么做Go?我可以编写循环/数组来管理变化,但实际的字符串转换就是我努力的方向。

回答

20

有一个在串包的内置函数调用的名称

请参阅https://play.golang.org/p/07dl3hMuGH

+1

您可能希望在调用Title func之前先小写文本 – boug

+1

答案如何解决问题中提到的异常? (和,在,与) – tomasz

-6

那么你没有指定你使用的语言,所以我会给你一个普遍的答案。你有一个包含一串字符串的数组。首先,我会将整个字符串设置为小写字母,然后通过字符串中的每个字符(大写第一个字符,保持小写)。此时你需要寻找空间,这将帮助你划分每个字符串中的单词。找到空格后的第一个字符显然是一个不同的词,应该大写。您可以验证下一个单词是否与“或”同时出现。

我不是在电脑前,所以我不能给一个具体的例子,但我希望这得到在至少

+0

他用围棋。标记是这里的主要指标,虽然在问题中也提到了它。 – tomasz

5

您可以使用regular expressions此任务的正确方向。 A \w+正则表达式将匹配所有单词,然后通过使用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

您可以轻松地适应这个以您的字符串数组的。

相关问题