LoginSignup
0
0

More than 1 year has passed since last update.

Golangのゼロサプレス

Posted at

ゼロサプレスとは

例えば“000012"という文字列があったときに、頭についている余計な”0”を取り除くこと

// ゼロサプレスの例
000012 → 12
001234 → 1234
000101 → 101
000110 → 110

最初にゼロサプレスをするために考えたこと

文字列を一つ一つ見ていって、0ではないものが出てきた時に別スライスにappendすればいいんじゃないか

before.go
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()を用いて書くと

after.go
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

と、すぐできた

まとめ

標準パッケージ便利、ちゃんと調べよう

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0