将字符串中单词的首字母大写

Make first letter of words uppercase in a string

我有一大堆字符串,比如这个:

"INTEGRATED ENGINEERING 5 Year (BSC with a Year in Industry)"

我想把单词的第一个字母大写,其余单词小写。所以 INTEGRATED 会变成 Integrated.

作品中的第二个扳手 - 我想要一些单词的例外,例如 andinawith.

所以上面的例子会变成:

"Integrated Engineering 5 Year (Bsc with a Year in Industry)"

我如何在 Go 中执行此操作?我可以编写 loop/arrays 代码来管理更改,但实际的字符串转换是我努力解决的问题。

嗯,你没有指定你使用的语言,所以我会给你一个一般的答案。你有一个数组,里面有一堆字符串。首先,我将整个字符串设为小写,然后遍历字符串中的每个字符(将第一个字符大写,其余保持小写)。此时你需要寻找space,这将帮助你划分每个字符串中的单词。找到 space 后的第一个字符显然是一个不同的词,应该大写。您也可以验证下一个单词是否在 Or a 中。

我不在电脑旁,所以无法举出具体的例子,但我希望这至少能朝着正确的方向发展

您可以使用 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

您可以轻松地将其适应您的字符串数组

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

s := "INTEGRATED ENGINEERING 5 Year (BSC with a Year in Industry)"
fmt.Println(strings.Title(strings.ToLower(s)))

https://go.dev/play/p/THsIzD3ZCF9