Golang中是否有string.Repeat(“ 0”,3)(检测前导零的数量)的嵌入的对面?

I have strings starting with 0's. need to get number of leading zeros: Something like:

func LeadZeros(num string) int{
    // count the leading zeros
    return leadZerosNumber
}

LeadZeros("0012") --> 2
LeadZeros("5")    --> 0
LeadZeros("05")   --> 1
LeadZeros("0")    --> 0 (1 also good)
LeadZeros("00")   --> 1 (2 also good)

Looking for something embedded in go (or very short format)

e.g for writing there is: strings.Repeat("0", 3)

func LeadZeros(num string) int {

    i := 0
    for ;i < len(num) && num[i] == '0'; i++ {
    }

    return i
}

There are a lot of ways to do this and I would suggest the easiest to understand. Here is another one-liner:

func LeadZeros(num string) int {
    return len(num) - len(strings.TrimLeft(num, "0"))
}

Using regular expressions:

func LeadingZeros(str string) int {
    re := regexp.MustCompile("^0.*")
    match := re.FindString(str)
    return len(match)
}
func LeadZeros(num string) int{
    leadZerosNumber := 0
    for leadZerosNumber < len(num) && num[leadZerosNumber] == '0' {  
        leadZerosNumber++
    }

    return leadZerosNumber
}

You can check all entire code on playground

To adapt code to output these cases:

LeadZeros("0") --> 0

LeadZeros("00") --> 1

Just change for condition from leadZerosNumber < len(num) && num[leadZerosNumber] == '0' to leadZerosNumber < len(num) - 1 && num[leadZerosNumber] == '0'

package main

import (
    "fmt"
)

func main() {
    yourString := "0012"
    fmt.Println("Number Of Initial 0 = ", leadZeros(yourString))
}

func leadZeros(num string) (leadZerosNumber int) {

    for index := range num {
        if string(num[index]) == "0" {
            leadZerosNumber++
        } else {
            break
        }
    }

    return leadZerosNumber
}
package main

import "fmt"

func main(){
   fmt.Println(LeadingZeros("0010"))
}


func LeadingZeros(s string) int {
c:=0
 for _,v := range s {
    if v=='0'{
        c++
    }else{
        break
    }
 }
 return c
}