regex - 在 Go 正则表达式中拆分浮点字符串

标签 regex string go

我正在尝试使用 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/

相关文章:

python - 记录边界上的正则表达式匹配

JavaScript - 根据 Twitter 规则进行简单的字符计数

c# - 字符串中的特殊字符.Replace

php - JavaScript 问题 - 未将前导 '0' 的字符串传递到正确的字符串

go - 如何跨go包使用常量

arrays - 语法错误 : unexpected semicolon or newline, 期待 }

java - 正则表达式风格的比较

c# - 正则表达式拆分字符串但保留分隔符,但不作为单独的元素

arrays - 如何在 hive sql 中将数组转换为字符串?

go - 来自客户端的简单 Websocket 连接示例