Заменить символ карты номером строки

#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