2 回答
TA贡献1847条经验 获得超7个赞
您正在寻找的功能是unicode.IsUpper(r rune) bool.
我会使用 abytes.Buffer这样你就不会做一堆字符串连接,这会导致额外的不必要的分配。
这是一个实现:
func addSpace(s string) string {
buf := &bytes.Buffer{}
for i, rune := range s {
if unicode.IsUpper(rune) && i > 0 {
buf.WriteRune(' ')
}
buf.WriteRune(rune)
}
return buf.String()
}
和一个播放链接。
TA贡献1783条经验 获得超4个赞
您可以使用 unicode 包测试大写。这是我的解决方案:
package main
import (
"fmt"
"strings"
"unicode"
)
func main() {
name := "ClientLovesProcess"
newName := ""
for _, c := range name {
if unicode.IsUpper(c){
newName += " "
}
newName += string(c)
}
newName = strings.TrimSpace(newName) // get rid of space on edges.
fmt.Println(newName)
}
- 2 回答
- 0 关注
- 238 浏览
添加回答
举报