golang中多个字符串字段的Sscanf

时间:2015-08-23 18:38:30

标签: go

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

1 个答案:

答案 0 :(得分:6)

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

在C中,您可以使用%[^:]而非%s来解决此问题,但看起来Go不支持此功能。您可能需要找到一些方法来解析不带Sscanf的字符串。