我有这样的字符串ClientLovesProcess
我需要在每个大写字母之间添加一个空格,除了第一个大写字母,所以最终结果是Client Loves Process
我认为golang没有最好的字符串支持,但这就是我考虑去做的事情:
首先遍历每个字母,如下所示:
name := "ClientLovesProcess"
wordLength := len(name)
for i := 0; i < wordLength; i++ {
letter := string([]rune(name)[i])
// then in here I would like to check
// if the letter is upper or lowercase
if letter == uppercase{
// then break the string and add a space
}
}
问题是我不知道如何检查字母是低位还是大写。我检查了字符串手册,但他们没有一些功能。什么是另一种完成这项工作的方法?
答案 0 :(得分:7)
您正在寻找的功能是unicode.IsUpper(r rune) bool
。
我会使用bytes.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()
}
答案 1 :(得分:0)
您可以使用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)
}