猿问

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

假设我们有一个转换为字符串的浮点数:

"24.22334455667"

我只想返回小数点右边的 6 位数字

我可以通过这种方式获得小数点后的所有数字:

re2 := regexp.MustCompile(`[!.]([\d]+)$`)

但我只想要小数点后的前 6 位数字,但这不返回任何内容:

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

我怎样才能做到这一点?我找不到使用的例子[\d]{1,6}

谢谢


三国纷争
浏览 206回答 2
2回答

慕慕森

或者...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 只是一个简单的函数来找到两个整数的最小值。对于这种简单的字符串操作,正则表达式似乎有点重量级。

元芳怎么了

您必须删除行尾锚点,$因为它不会是正好 6 位数字后的行尾。要准确捕获 6 位数字,量词必须是re2 := regexp.MustCompile(`[!.](\d{6})`)请注意,这也是存在于 旁边的数字!。如果你不想要这种行为,你必须!从字符类中删除re2 := regexp.MustCompile(`[.](\d{6})`)或者为了捕获数字范围从 1 到 6,re2 := regexp.MustCompile(`[!.](\d{1,6})`)
随时随地看视频慕课网APP

相关分类

Go
我要回答