在Golang中,如何使用Sscanf读取多个字符串字段?

8
我想使用sscanf解析多个字符串字段,以下是示例代码片段:
package main

import "fmt"

func main() {
        var name, currency string

    _, err := fmt.Sscanf("transaction benson: dollars", "transaction %s: %s", &name, &currency)

    fmt.Println(err, name, currency)
}

输出结果为:
input does not match format benson: 

Program exited.

2
尝试这个解决方案:https://play.golang.org/p/o3i-f8PnvV - user142162
1个回答

11

%s是贪婪的,并一直吃到下一个空格,这意味着它会吞掉冒号。在处理完%s之后,它会尝试扫描冒号,但等等,那已经被消耗了,而下一个字符实际上是一个空格,而不是冒号!所以它失败了。

在C中,您可以通过使用%[^:]而不是%s来解决此问题,但似乎Go不支持这一点。您可能需要找到一些方法来解析字符串而不使用Sscanf


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接