我无法将字母和数字混合的字符串转换为带(或不带)小数的数字。该字符串不一定是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
答案 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