我有一大堆字符串,例如:
'综合工程5年(工业年度平衡计分卡)'
我想将单词的第一个字母大写,并将其余单词设为小写.所以'INTEGRATED'会变成'整合'.
作品中的第二个扳手 - 我想要一些例外,例如'和','in','a','with'.
所以上面的例子将成为:
综合工程5年(工业年度Bsc).
我怎么在Go中这样做?我可以编写循环/数组来管理更改,但实际的字符串转换是我所挣扎的.
bou*_*oug 52
在字符串包中有一个内置函数调用 strings
请参阅https://play.golang.org/p/07dl3hMuGH
Sau*_*abh 23
package main
import (
"fmt"
"golang.org/x/text/cases"
"golang.org/x/text/language"
)
func main() {
msg := "INTEGRATED ENGINEERING 5 Year (BSC with a Year in Industry)"
fmt.Println(cases.Title(language.English, cases.Compact).String(msg))
}
Run Code Online (Sandbox Code Playgroud)
您可以使用正则表达式执行此任务.正则\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)
Run Code Online (Sandbox Code Playgroud)
https://play.golang.org/p/uMag7buHG8
您可以轻松地将其调整为您的字符串数组.
归档时间: |
|
查看次数: |
29169 次 |
最近记录: |