为了账号安全,请及时绑定邮箱和手机立即绑定

在大写字母之间添加一个空格

在大写字母之间添加一个空格

Go
翻阅古今 2021-11-15 20:43:12
我有这样的字符串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   }}问题是我不知道如何检查一个字母是小写还是大写。我检查了字符串手册,但他们没有一些有它的功能。用 go 完成这件事的另一种方法是什么?
查看完整描述

2 回答

?
aluckdog

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

}

和一个播放链接。


查看完整回答
反对 回复 2021-11-15
?
慕娘9325324

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)

}


查看完整回答
反对 回复 2021-11-15
  • 2 回答
  • 0 关注
  • 238 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信