Linux、Mac、Windows换行符
关于“回车键”的来历,它源自于机械英文打字机。在机械英文打字机上,有一个部件叫“字车”,每打一个单词,“字车”就前进一格。当打满一行字符后,打字者就得推动“字车”到起始位置,这时打字机会有两个动作响应:一是“字车”被归位,二是滚筒上卷一行,以便开始输入下一行,这个推动“字车”的动作叫 “回车”。后来,在电动英文打字机上,人们增加了一个直接起“回车”作用的键。这个新增的键就被称为“回车键”。
换行符‘\n’和回车符‘\r’分别表示不同的意思。换行符就是另起一行,回车符就是回到一行的开头。所以我们平时编写文件的回车符应该确切来说叫做回车换行符。它们在 ASCII 码表中分别对应 10 和 13,也可以表示为 ‘\x0a’ 和 ‘\x0d’。
在不同的操作系统中,换行符的使用也有所不同。例如,在 Windows 系统下,回车换行符号是 “\r\n”。但是在 Linux 等系统下是没有 “\r” 符号的。在解析文本或其他格式的文件内容时,常常要碰到判定回车换行的地方,这个时候就要注意既要判定 “\r\n” 又要判定 “\n”。
在 macOS 系统中,换行符的使用有着一段有趣的历史。在早期的 Mac OS 经典操作系统(Mac OS 9 以及之前)中,换行符是回车符(CR),即 “\r”。但是,在 Mac OS X 系统发布后,苹果公司废除了早期的规矩,投奔 Unix,所以改成用 “\n”(LF)作为换行符。因此,在现代的 macOS 系统中,换行符是 “\n”(LF)。
在 macOS 系统中,可以通过键盘上的 return 或 enter 键来输入回车符(CR)。而要输入换行符(LF),可以使用 control + return 或 control + enter 组合键。此外,你也可以在文本编辑器中设置换行符的类型。
关于windows下使用bufio读取string转化为int去除\r\n
下面是一个 Go 语言代码示例,它演示了如何在 Windows 环境下使用 bufio 读取字符串并转化为 int 类型时去除 “\r\n”:
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func main() {
reader := bufio.NewReader(os.Stdin)
fmt.Println("Please enter a number:")
input, err := reader.ReadString('\n')
if err != nil {
fmt.Println("An error occurred while reading input. Please try again", err)
return
}
input = strings.TrimSuffix(input, "\n")
input = strings.TrimSuffix(input, "\r")
number, err := strconv.Atoi(input)
if err != nil {
fmt.Println(err)
fmt.Println("Invalid input. Please enter an integer value")
return
}
fmt.Println("Your number is", number)
}
以上是关于Linux、Mac、Windows换行符及对'\r'和'\n'的不同处理的一些知识,希望可以帮到你们。