Есть ли встроенная противоположность строк. Repeat ("0", 3) (обнаружение числа нулей) в Голанге? - PullRequest
0 голосов
/ 29 октября 2018

У меня есть строки, начинающиеся с 0. нужно получить число ведущих нулей: Что-то вроде:

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)

Ищем что-то встроенное в go (или очень короткий формат)

например, для записи есть: strings.Repeat ("0", 3)

Ответы [ 5 ]

0 голосов
/ 29 октября 2018
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
}
0 голосов
/ 29 октября 2018
func LeadZeros(num string) int {

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

    return i
}

Есть много способов сделать это, и я бы предложил самый простой для понимания. Вот еще одна строка:

func LeadZeros(num string) int {
    return len(num) - len(strings.TrimLeft(num, "0"))
}
0 голосов
/ 29 октября 2018
func LeadZeros(num string) int{
    leadZerosNumber := 0
    for leadZerosNumber < len(num) && num[leadZerosNumber] == '0' {  
        leadZerosNumber++
    }

    return leadZerosNumber
}

Вы можете проверить весь код на детской площадке

Чтобы адаптировать код для вывода этих случаев:

LeadZeros ("0") -> 0

LeadZeros ("00") -> 1

Просто измените для условия с leadZerosNumber < len(num) && num[leadZerosNumber] == '0' на leadZerosNumber < len(num) - 1 && num[leadZerosNumber] == '0'

0 голосов
/ 29 октября 2018
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
}
0 голосов
/ 29 октября 2018

Использование регулярных выражений:

func LeadingZeros(str string) int {
    re := regexp.MustCompile("^0.*")
    match := re.FindString(str)
    return len(match)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...