go语言练习 : 编写一个非递归版本的comma函数,使用bytes.Buffer代替字符串链接操作。

go语言字符串操作之练习:一个非递归版本的comma函数

如果输入字符串的长度小于或等于3的话,则不需要插入逗分隔符。否则,comma函数将在最后三个字符前位置将字符串切割为两个两个子串并插入逗号分隔符,例如:输入:1234567778 格式化成:1,234,567,778


func Comma1(str string) string {
if len(str) <=3 {
return str
}
var buf bytes.Buffer
var tem []byte
s := []byte(str)
comm := bytes.IndexByte(s,’.’)
if comm != -1 {
tem = s[comm:]
s = s[:comm]

}
if strings.HasPrefix(str,"-") || strings.HasPrefix(str,"+"){
    buf.WriteByte(s[0])
    s = s[1:]
}
for n := len(s);n>0;{
    m := n % 3
    if m > 0 {
        buf.Write(s[:m])
        s = s[m:n]
        n -=m
    }
    fmt.Fprintf(&buf,",%s",s[:3])       
    s = s[3:n]
    n = n-3 
} 
buf.Write(tem)
return buf.String()   

}
不知道还有没有更简洁、高效的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值