#string #go #integer
#строка #Вперед #целое число
Вопрос:
У меня есть строка с арабским номером. Как заменить этот символ из номеров карт?
Строка: 000۲۱۷۹۰۰
мой код:
var digitconv = map[string]int{"۰":0, "۱":1, "۲":2, "۳":3, "۴":4, "۵":5, "۶":6, "۷":7, "۸":8, "۹":9}
func main() {
num := "000۲۱۷۹۰۰"
chk, _ := regexp.Match("", num)
fmt.Println(chk)
}
Комментарии:
1. Не используйте регулярное выражение. Регулярное выражение почти всегда является неправильным инструментом. Просто используйте
strings.ReplaceAll
в цикле for илиstrings.Map
илиstrings.Replacer
.
Ответ №1:
Просто используйте strings.Map()
:
var digitconv = map[rune]rune{
'۰': '0', '۱': '1', '۲': '2', '۳': '3', '۴': '4',
'۵': '5', '۶': '6', '۷': '7', '۸': '8', '۹': '9',
}
num := "000۲۱۷۹۰۰"
fmt.Println(num)
s := strings.Map(func(r rune) rune {
if r2, ok := digitconv[r]; ok {
return r2
}
return r
}, num)
fmt.Println(s)
Вывод (попробуйте это на игровой площадке Go):
000۲۱۷۹۰۰
000217900