我正在尝试编写一个函数来保持从缓冲读取器读取,直到我遇到某个字符串,然后停止读取并返回在该字符串之前读取的所有内容。换句话说,我想做和之前一样的事情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
提交
取消