为了账号安全,请及时绑定邮箱和手机立即绑定

在 Go 中返回定义的字符范围

在 Go 中返回定义的字符范围

Go
三国纷争 2021-11-08 15:33:28
假设我们有一个转换为字符串的浮点数:"24.22334455667"我只想返回小数点右边的 6 位数字我可以通过这种方式获得小数点后的所有数字:re2 := regexp.MustCompile(`[!.]([\d]+)$`)但我只想要小数点后的前 6 位数字,但这不返回任何内容:re2 := regexp.MustCompile(`[!.]([\d]{1,6})$`)我怎样才能做到这一点?我找不到使用的例子[\d]{1,6}谢谢
查看完整描述

2 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

或者...


func DecimalPlaces(decimalStr string, places int) string {

    location := strings.Index(decimalStr, ".")

    if location == -1 {

        return ""

    }

    return decimalStr[location+1 : min(location+1+places, len(decimalStr))]

}

其中 min 只是一个简单的函数来找到两个整数的最小值。


对于这种简单的字符串操作,正则表达式似乎有点重量级。


查看完整回答
反对 回复 2021-11-08
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

您必须删除行尾锚点,$因为它不会是正好 6 位数字后的行尾。要准确捕获 6 位数字,量词必须是

re2 := regexp.MustCompile(`[!.](\d{6})`)

请注意,这也是存在于 旁边的数字!。如果你不想要这种行为,你必须!从字符类中删除

re2 := regexp.MustCompile(`[.](\d{6})`)

或者

为了捕获数字范围从 1 到 6,

re2 := regexp.MustCompile(`[!.](\d{1,6})`)


查看完整回答
反对 回复 2021-11-08
  • 2 回答
  • 0 关注
  • 205 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信