我有一大堆字符串,例如:
'综合工程5年(工业年度平衡计分卡)'
我希望将单词的第一个字母大写,并将其余单词设为小写。所以' INTEGRATED'将成为“集成”。
作品中的第二个扳手 - 我想要一些例外,例如'和',''' a',' ;与&#39 ;.
所以上面的例子将成为:
综合工程5年(工业年度Bsc)。
我将如何在Go中执行此操作?我可以编写循环/数组来管理变更,但实际的字符串转换是我所挣扎的。
答案 0 :(得分:44)
内置的strings
包中有一个名为Title
的函数。
答案 1 :(得分:8)
您可以使用regular expressions执行此任务。 \w+
正则表达式将匹配所有单词,然后使用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
您可以轻松地将其调整为字符串数组。
答案 2 :(得分:-10)
嗯,你没有指定你正在使用的语言,所以我会给你一个通用答案。你有一个包含大量字符串的数组。首先,我将整个字符串设置为小写,然后只浏览字符串中的每个字符(将第一个字符大写,将其保留为小写字母)。此时你需要寻找空间,这将帮助你划分每个字符串中的单词。找到空格后的第一个字符显然是一个不同的单词,应该大写。您可以验证下一个单词isn&t tt以及or a。
我不是在电脑上,所以我无法给出一个具体的例子,但我希望这至少可以朝着正确的方向发展