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

Golang:跳过文件中的空格

Golang:跳过文件中的空格

Go
子衿沉夜 2021-11-08 18:25:12
在 Go 中读取文件时,我试图跳过所有空格;但是,我在寻找正确的方法来做到这一点时遇到了问题。任何援助将不胜感激file, err := os.Open(filename) // For read access.        this.file = file        if err != nil {                log.Fatal(err)        }//skip white space  c := make([]byte, 1)    char, err := this.file.Read(c)    //skip white space    for {            //catch unintended errors            if err != nil && err != io.EOF {                    panic(err)            }            if err == io.EOF || !unicode.IsSpace(int(c)) {                    break            }            //get next            char, err := this.file.Read(c)    }我只是试图为文件创建一个扫描仪,一次读取一个字符并忽略空格编辑我改变了一些东西来使用 bufio.Reader; 但是我仍然遇到问题逐字符读取文件的正确方法是什么,以便将其与特定符号(例如“A”)进行比较,但也可以忽略空格,即 unicode.isSpace(rune)char, size, err := this.reader.ReadRune()    //skip white space and comments    for {            //catch unintended errors            if err != nil && err != io.EOF {                    panic(err)            }            if err == io.EOF {                    break            }            //skip it when their is no data or a space            if size != 0 && char == '{' {                    //Ignore Comments                    //Documentation specifies no nested comments                    for char != '}' {                            char, size, err = this.reader.ReadRune()                    }            } else if !unicode.IsSpace(char) {                    break            }            // Do something with the byte            fmt.Print(char)            //get next            char, size, err = this.reader.ReadRune()    }
查看完整描述

1 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

除非我误解了您的问题,否则您continue在遇到空格时似乎需要声明。


c := make([]byte, 100)


n, err := this.file.Read(c)


//skip white space

for {

    //catch unintended errors

    if err != nil && err != io.EOF {

        panic(err)

    }

    if err == io.EOF {

        break

    }


    for i := 0; i < n; i++ {

        ch := c[i]


        switch ch {

        case '{': // Do something

        case '}': // Do something else

        default:

            if unicode.IsSpace(int(ch)) {

                continue

            }

            // Do whatever

        }

    }


        //get next

    n, err = this.file.Read(c)

}

我不知道你为什么一次读一个字节,但我还是故意这样写的。至少,我认为您想要读取完整的 unicode 字符而不是单个字节。


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

添加回答

举报

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