去掉Golang中的零值
零抑制是什么意思?
在一个字符串中,例如存在”000012″,需要去除开头多余的”0″。
// ゼロサプレスの例
000012 → 12
001234 → 1234
000101 → 101
000110 → 110
最初想要进行零度压缩的想法
逐个检查字符序列,当遇到非零元素时,将其加入到另一个切片中,这样行不行呢?
package main
import (
"fmt"
"strings"
)
func zeroSuppress(str string) string {
slice := strings.Split(str, "")
res := make([]string, 0)
flag := false
for _, v := range slice {
if v != "0" {
flag = true // 0でないものが現れたら、flagをtrueにしてappendするようにした
}
if flag == true {
res = append(res, v)
}
}
return strings.Join(res, "")
}
func main() {
str1 := "000012"
str2 := "001020"
fmt.Println("str1: ", zeroSuppress(str1))
fmt.Println("str2: ", zeroSuppress(str2))
}
// > 12
// > 1020
有点麻烦吗?
在go语言的标准包中存在的。
当我进行调查时,确实发现这个包已经标准地包含在内了。。。
如果在这个方法的第二个参数中指定为”0″,似乎可以进行零抑制。
使用strings.TrimLeft()函数进行零删除
使用strings.TrimLeft()函数来编写上述程序。
将上述程序用strings.TrimLeft()函数进行修改。
用strings.TrimLeft()函数改写上面的程序。
package main
import (
"fmt"
"strings"
)
func main() {
str1 := "000012"
str2 := "001020"
fmt.Println(strings.TrimLeft(str1, "0"))
fmt.Println(strings.TrimLeft(str2, "0"))
}
// > 12
// > 1020
然后,马上完成了
总结
標準套餐非常方便,該好好調查一下。