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()
} 不知道还有没有更简洁、高效的方法。