String 在大写字母之间添加空格

String 在大写字母之间添加空格,string,go,String,Go,我有这样的字符串ClientLovesProcess除了第一个大写字母之外,我需要在每个大写字母之间添加一个空格,这样最终的结果就是这个客户端lovesprocess 我不认为golang有最好的字符串支持,但我正是这样考虑的: 首先循环每个字母,如下所示: name := "ClientLovesProcess" wordLength := len(name) for i := 0; i < wordLength; i++ { letter := string([]rune(

我有这样的字符串
ClientLovesProcess
除了第一个大写字母之外,我需要在每个大写字母之间添加一个空格,这样最终的结果就是这个
客户端lovesprocess

我不认为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
   }
}
name:=“ClientLovesProcess”
字长:=len(名称)
对于i:=0;i

问题是我不知道如何检查go中的字母是小写还是大写。我查看了字符串手册,但它们没有相应的功能。使用go完成此任务的另一种方法是什么?

您可以使用unicode软件包测试大写字母。这是我的解决方案:


您正在寻找的功能是

我将使用一个
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()
}
还有一个

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()
}