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

从读取器读取直到到达字符串

从读取器读取直到到达字符串

Go
交互式爱情 2021-06-15 17:12:39
我正在尝试编写一个函数来保持从缓冲读取器读取,直到我遇到某个字符串,然后停止读取并返回在该字符串之前读取的所有内容。换句话说,我想做和之前一样的事情reader.ReadString(),除了使用字符串而不是单个字节。例如:mydata, err := reader.ReadString("\r\n.\r\n") //obviously will not compile我怎样才能做到这一点?提前致谢,特威奇修订 1:以前的尝试这是我之前的尝试;它写得很糟糕并且不起作用,但希望它展示了我正在尝试做的事情。func readDotData(reader *bufio.Reader)(string, error){delims := []byte{ '\r', '\n', '.', '\r', '\n'}curpos := 0var buffer []bytefor {    curpos = 0    data, err := reader.ReadSlice(delims[0])    if err!=nil{ return "", err }    buffer = append(buffer, data...)    for {        curpos++        b, err := reader.ReadByte()        if err!=nil{ return "", err }        if b!=delims[curpos]{            for curpos >= 0{                buffer = append(buffer, delims[curpos])                curpos--            }            break        }        if curpos == len(delims){            return string(buffer[len(buffer)-1:]), nil        }    }}panic("unreachable")}
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 185 浏览
慕课专栏
更多

添加回答

举报

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