在 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 字符而不是单个字节。
- 1 回答
- 0 关注
- 248 浏览
添加回答
举报
0/150
提交
取消