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

新手上路,请多包涵

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

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

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

A second spanner in the works - I want an exception to a few words such as and , in , a , with .

所以上面的例子会变成:

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

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

原文由 Conor 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 872
2 个回答

内置 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

原文由 boug 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以为此任务使用 正则表达式。 A \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

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

原文由 tomasz 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题