在uppsercase字母之间添加空格

时间:2015-10-21 16:10:43

标签: string go

我有这样的字符串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
   }
}

问题是我不知道如何检查字母是低位还是大写。我检查了字符串手册,但他们没有一些功能。什么是另一种完成这项工作的方法?

2 个答案:

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

play link

答案 1 :(得分:0)

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

playground

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