将数字和字母混合的字符串转换为数字

时间:2020-05-03 14:36:57

标签: go

我无法将字母和数字混合的字符串转换为带(或不带)小数的数字。该字符串不一定是99,50,但也可以是任何其他字符串表示的数字。小数点分隔符也可以是.而不是,

我尝试了以下(playground link):

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)
}

我从所有人那里得到的输出是这样的:

0

想要的输出是这样的:

99.50

也可以接受的是:

99

1 个答案:

答案 0 :(得分:2)

您可以使用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)

操场上的代码here