解析文件,忽略注释和空行

时间:2016-04-17 21:03:36

标签: go

正如标题所说,我正在尝试解析文件但忽略注释(以#开头)或空行。我试图为此制作一个系统,但似乎总是忽略它应该忽略注释和/或空行。

lines := strings.Split(d, "\n")
var output map[string]bool = make(map[string]bool)

for _, line := range lines {
    if strings.HasPrefix(line, "#") != true {
        output[line] = true
    } else if len(line) > 0 {
        output[line] = true
    }
}

运行时(这是函数的一部分),它输出以下

This is the input ('d' variable):
Minecraft
Zerg Rush
Pokemon

# Hello

This is the output when printed ('output' variable):

map[Minecraft:true Zerg Rush:true Pokemon:true :true # Hello:true]

我的问题是它仍然保留“”和“#Hello”值,这意味着某些事情失败了,这是我无法弄清楚的。

那么,我做错了什么才能保持不正确的价值呢?

1 个答案:

答案 0 :(得分:2)

对于len(line) > 0行,

"# Hello"将为true,因此会将其添加到output

目前,您添加的行不是以开头的非空行。您只需添加满足两个条件的行:

if !strings.HasPrefix(line, "#") && len(line) > 0 {
    output[line] = true
}