青春有我
我们只能猜测。你没有清楚地定义你的问题。请阐明您的具体问题或添加其他详细信息以准确突出您的需求。提供示例输入和输出。Go 编程语言规范在反斜杠之后,某些单字符转义表示特殊值:\n U+000A line feed or newline这是一个猜测:lines.go:package mainimport ( "fmt" "io/ioutil" "os" "strings")func lines(data []byte) { text := string(data) for i, j := 0, 0; j >= 0; i += j + 1 { var line string j = strings.IndexByte(text[i:], '\n') if j < 0 { line = text[i:] if len(line) == 0 { continue } } else { line = text[i : i+j+1] } // process line fmt.Printf("%d %q\n", len(line), line) }}func main() { filename := `test.file` data, err := ioutil.ReadFile(filename) if err != nil { fmt.Fprintln(os.Stderr, err) return } fmt.Printf("%d %q\n", len(data), data) lines(data)}输出:$ cat test.fileline1line2line3$ go run lines.go18 "line1\nline2\nline3\n"6 "line1\n"6 "line2\n"6 "line3\n"评论:我会尝试通过一个例子来阐明它。假设我有一个内容为“ara/n;>$g9s”的文件,我的应用程序将在文件内容中移动时执行由该输入字符定义的操作。也就是说,如果“a”执行操作 1,“r”执行操作 2,“/n”执行操作 3 等等,那么上面的输入将按顺序执行以下操作 1,2,1,3...。但是,如果将字节数组转换为字符串,那么我将无法识别“/n”字符,因为尽管打印出来或将其连接到文件中时字符串的格式与以前相同,但它们似乎已被删除。– 埃利奥特史密斯你为什么要写/n一个换行符!正如我已经指出的那样,换行符 U+000A 写为\n.例如,package mainimport "fmt"func es(s string) { for _, r := range s { switch r { case 'a': fmt.Printf("action 1 for %q\n", r) case 'r': fmt.Printf("action 2 for %q\n", r) case '\n': fmt.Printf("action 3 for %q\n", r) default: fmt.Printf("action ? for %q\n", r) } }}func main() { b := []byte("ara\n;>$g9s") s := string(b) es(s)}游乐场:https://play.golang.org/p/3J0pxXh3Wkc输出:action 1 for 'a'action 2 for 'r'action 1 for 'a'action 3 for '\n'action ? for ';'action ? for '>'action ? for '$'action ? for 'g'action ? for '9'action ? for 's'修改后的问题:例子:如果文件内容是“r/n3$/n;” 那么当我从左到右移动文件内容时,我应该能够执行 6 个预定义的操作(每个字符一个)。埃利奥特·史密斯你为什么要写/n一个换行符!正如我已经指出的那样,换行符 U+000A 写为\n.例如,package mainimport "fmt"func es(s string) { for _, r := range s { switch r { case 'a': fmt.Printf("action for %q\n", r) case 'r': fmt.Printf("action for %q\n", r) case '\n': fmt.Printf("action for %q\n", r) default: fmt.Printf("action for %q\n", r) } }}func main() { file := []byte("r\n3$\n;") s := string(file) es(s)}游乐场:https://play.golang.org/p/X1gtrPRmlqq输出:action for 'r'action for '\n'action for '3'action for '$'action for '\n'action for ';'