我正在尝试使用 Golang 的正则表达式将特定字符串类型拆分为其成分。
我拥有的是任何给定 float 的 Sprinf(".2f", n)
(将其简化为小数点后 2 位),并希望像这样分隔百分之一数字:
"1.25" = ["1.2", "5"]
"1.99" = ["1.9", "9"]
在 PHP 中,这类似于:
preg_match('/^ (\-? \d [.] \d) (\d) $/x', sprintf('%1.2f', $input), $matches)
我可以通过 $matches[0] 和 $matches[1] 获得零件。
尝试过:
re := regexp.MustCompile(`/^ (\-? \d [.] \d) (\d) $/x`)
fmt.Printf("%q\n", re.FindAllStringSubmatch("1.50", 2))
没有用。提前致谢。
最佳答案
为什么你需要正则表达式?简单地 slice 字符串:
func split(s string) []string {
if len(s) == 0 {
return nil
}
return []string{s[:len(s)-1], s[len(s)-1:]}
}
测试它:
nums := []string{
fmt.Sprintf("%.2f", 1.25),
fmt.Sprintf("%.2f", 1.99),
fmt.Sprintf("%.2f", 1.25),
fmt.Sprintf("%.2f", 1.2),
fmt.Sprintf("%.2f", 0.0),
fmt.Sprintf("%.2f", -1.2),
"",
}
for _, n := range nums {
fmt.Printf("%q = %q\n", n, split(n))
}
输出(在 Go Playground 上尝试):
"1.25" = ["1.2" "5"]
"1.99" = ["1.9" "9"]
"1.25" = ["1.2" "5"]
"1.20" = ["1.2" "0"]
"0.00" = ["0.0" "0"]
"-1.20" = ["-1.2" "0"]
"" = []
关于regex - 在 Go 正则表达式中拆分浮点字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55898997/