Преобразовать строку со смесью цифр и букв в число - PullRequest
0 голосов
/ 03 мая 2020

У меня проблемы с преобразованием строки со смешанными буквами и цифрами в число с (или без) десятичными числами. Строка не обязательно 99,50, но также может быть любой другой представленной строкой числом. Десятичный разделитель также может быть . вместо ,.

. Я пробовал следующее ( площадка для игр ):

package main
import (
    "fmt"
    "strconv"
)

func main() {
    price := "99,50 SEK"

    res1, _ := strconv.Atoi(price)
    fmt.Println(res1)

    res2, _ := strconv.ParseInt(price, 10, 64)
    fmt.Println(res2)

    res3, _ := strconv.ParseFloat(price, 64)
    fmt.Println(res3)
}

Выход I получить от всех них это:

0

Вывод I хочу это:

99.50

Также приемлемо будет:

99

1 Ответ

2 голосов
/ 03 мая 2020

Вы можете использовать пакет regexp для удаления букв и замены , на ., используя ReplaceAll и синтаксический анализ

price := "99,50 SEK"    
reg, _:= regexp.Compile("[^0-9,]+") // regex for digit and comma only
processedString := reg.ReplaceAllString(price , "") // remove all letters 
processedString = strings.ReplaceAll(processedString, ",", ".") // replace comma with point

res3, _ := strconv.ParseFloat(processedString, 64)

Код на игровой площадке здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...