如何在没有","的情况下捕获以字节为单位"2,000.00"字符串化文本并将其转换为 float64?



我的目标是在没有,的情况下捕获[]byte的字符串化文本"2,000.00"并将其转换为float64。问题是正则表达式使用,捕获组MUTASI

代码

package main
import (
"bytes"
"fmt"
"regexp"
)
func main() {
mutasis := [][]byte{[]byte("28,000.00 DB"), []byte("5,000,000.00")}
re := regexp.MustCompile(`(?m)^(?P<MUTASI>[d,.]+)(?: (?P<TIPE>DB|CR))*$`)
matches := re.FindAllSubmatch(bytes.Join(mutasis, []byte("n")), -1)
for _, match := range matches {
fmt.Println(string(match[1]))
}
}

我做了什么:

  1. 使用^(d+(?:[,d|.d]+)*)$但显然,?:被括号( )覆盖。

试试这个

func toFloat(data []byte) (float, error) {
return strconv.ParseFloat(strings.ReplaceAll(string(data), ",", ""), 64)
}

按空格拆分原始字节数组,然后将其传递给此函数。它将返回您需要的浮点数或错误

最新更新