Вы пытаетесь сделать две разные вещи здесь, поэтому вам нужно сначала разделить их в уме:
Сначала вы пытаетесь удалить все нечисловые символы.
Во-вторых, вы пытаетесь разделить все оставшиеся символы на фрагмент, содержащий отдельные символы.
Нет встроенной функции для удаления нечисловых символов из строки, но вы можете написать совпадение регулярного выражения и заменить его следующим образом:
str := "035a 444$ bb"
reg, err := regexp.Compile("[^0-9]+")
if err != nil {
panic(err)
}
numericStr := reg.ReplaceAllString(str, "")
Регулярное выражение соответствует любому символу, который не является в 0-9 включительно. Затем regexp.ReaplceAllString()
заменяет эти символы ничем.
Это заставляет numericStr
содержать строку
"035444"
После этого вы можете использовать strings.Split()
, чтобы получить нужный фрагмент.
s := strings.Split(numericStr, "")
Документация говорит нам, что:
Если sep пуст, Split разделяется после каждой последовательности UTF-8.
Так s
становится:
[]string{"0", "3", "5", "4", "4", "4"}