在字符串

时间:2015-11-13 15:22:02

标签: go

我有一大堆字符串,例如:

'综合工程5年(工业年度平衡计分卡)'

我希望将单词的第一个字母大写,并将其余单词设为小写。所以' INTEGRATED'将成为“集成”。

作品中的第二个扳手 - 我想要一些例外,例如'和',''' a',' ;与&#39 ;.

所以上面的例子将成为:

综合工程5年(工业年度Bsc)。

我将如何在Go中执行此操作?我可以编写循环/数组来管理变更,但实际的字符串转换是我所挣扎的。

3 个答案:

答案 0 :(得分:44)

内置的strings包中有一个名为Title的函数。

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

答案 1 :(得分:8)

您可以使用regular expressions执行此任务。 \w+正则表达式将匹配所有单词,然后使用Regexp.ReplaceAllStringFunc您可以用预期内容替换单词,跳过停用词。在您的情况下,strings.ToLowerstrings.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。

我不是在电脑上,所以我无法给出一个具体的例子,但我希望这至少可以朝着正确的方向发展