为了账号安全,请及时绑定邮箱和手机立即绑定

使字符串中单词的第一个字母大写

使字符串中单词的第一个字母大写

Go
红颜莎娜 2021-11-22 15:53:39
我有一大串字符串,比如这个:'INTEGRATED ENGINEERING 5 Year (BSC with a year in Industry)'我想将单词的第一个字母大写,并将其余单词小写。所以“集成”将变成“集成”。工作中的第二个扳手 - 我想要一个例外,例如“and”、“in”、“a”、“with”。所以上面的例子会变成:集成工程 5 年(Bsc,在工业领域工作一年)。我将如何在 Go 中做到这一点?我可以编写循环/数组来管理更改,但实际的字符串转换是我所挣扎的。
查看完整描述

3 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

内置strings包中有一个名为Title.


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


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

fmt.Println(strings.Title(strings.ToLower(s)))

https://play.golang.org/p/GLMVV10-4eX


查看完整回答
反对 回复 2021-11-22
?
繁星coding

TA贡献1797条经验 获得超4个赞

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


您可以轻松地将其调整为您的字符串数组。


查看完整回答
反对 回复 2021-11-22
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

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

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


查看完整回答
反对 回复 2021-11-22
  • 3 回答
  • 0 关注
  • 156 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信