【问题标题】:Make first letter of words uppercase in a string将字符串中单词的首字母大写
【发布时间】:2016-02-15 05:29:41
【问题描述】:

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

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

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

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

所以上面的例子会变成:

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

我将如何在 Go 中执行此操作?我可以对循环/数组进行编码来管理更改,但实际的字符串转换是我遇到的问题。

【问题讨论】:

    标签: string go title-case


    【解决方案1】:

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

    【讨论】:

    • 答案如何解决问题中提到的异常? (and, in a, with)
    • 小心这个函数,strings.Title 也会在' 大写之后生成字符。例如:strings.Title("capitlize's me") => Capitlize'S Me
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 他正在使用 Go。标签是这里的主要指标,尽管问题中也提到了它。
      • 尽管如此,层并没有看清楚,得到的语言是 Go,但想法是正确的。
      • 第二,这个问题的重点我认为与使用哪种语言无关。而从“我不在电脑前”我们可以得知layer使用的是手机,这个小错误是可以接受的,所以我为layer的热情和正确的想法给出了答案。
      猜你喜欢
      • 2014-06-19
      • 2011-09-15
      • 2011-01-20
      • 2014-05-19
      • 2021-09-07
      • 2010-12-05
      相关资源
      最近更新 更多