對于帶編號的字串 ( 1234),我通常使用strconv帶有Atoi在 Go 中從字串轉換為 int的函式的包。但是,如果編號字串以前導零開頭(例如01234),那么解決此問題的慣用方法是什么?
切片字串然后將其轉換[]string為[]int是一種方法,但它是最好/慣用的方法嗎?
更新 1:
從輸入 string 01234,預期輸出01234為任何型別的 int (在任何型別的簡單或組合型別的 int 中,例如foo := "01234"to bar = []int{0, 1, 2, 3, 4})。
01234是否有一個慣用的(或標準的包函式)來解決這個問題,或者當變數有一個或多個前導零(例如或)時,字串到符文/位元組對話(做一些業務邏輯然后轉換回來)是必要的00001。
更新2:只是為了讓它完全清楚,因為我覺得這個問題可以在未來得到澄清:作為一個foo, _ := strconv.Atoi("01234")回傳(并且可以通過包等其他方式獲得相同的結果)。1234intstrings
這里的問題是,我如何(如果可能,在 Go 慣用語中)獲得帶有前導零的結果,即type 中的01234(和 NOT 1234)int?
uj5u.com熱心網友回復:
用于strings.TrimLeft(s, "0")從字串中洗掉前導零。
uj5u.com熱心網友回復:
要將十進制字串轉換為這些十進制值的整數切片,請遍歷字串并使用減法將符文轉換為相應的整數:
func toIntSlice(s string) ([]int, error) {
var result []int
for _, r := range s {
if r < '0' || r > '9' {
return nil, fmt.Errorf("not an integer %s", s)
}
result = append(result, int(r-'0'))
}
return result, nil
}
示例使用:
foo := "01234"
bar, _ := toIntSlice(foo)
// bar is []int{0, 1, 2, 3, 4}
https://go.dev/play/p/ethHtApYoWUi
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/419854.html
標籤:
下一篇:將輸入整數本身相加,整數倍
