Ruby 为什么';t`";您好\r";。chomp(';';)`remove`\r";`?

Ruby 为什么';t`";您好\r";。chomp(';';)`remove`\r";`?,ruby,newline,Ruby,Newline,尽管该报告描述了: 如果$/是空字符串,它将从字符串中删除所有尾随的换行符 “hello\r”.chomp(“”)不会删除“\r”,如下所示 "hello\r\n".chomp # => "hello" "hello\r".chomp # => "hello" "hello\r\n".chomp('') # => "hello" "hello\r".chomp('') # => "hello\r" 为什么? 如果$/是空字符串,它将从字符串中删除

尽管该报告描述了:

如果
$/
是空字符串,它将从字符串中删除所有尾随的换行符

“hello\r”.chomp(“”)
不会删除
“\r”
,如下所示

"hello\r\n".chomp     # => "hello"
"hello\r".chomp       # => "hello"
"hello\r\n".chomp('') # => "hello"
"hello\r".chomp('')   # => "hello\r"
为什么?

如果$/是空字符串,它将从字符串中删除所有尾随的换行符

没错<代码>\rAKA
CR
不是换行符。它是一个回车字符(不开始新行)

至于为什么
chomp(“”)
删除CRLF,这是因为CRLF是Windows风格的换行符。Linux使用LF


旧的Mac操作系统(直到v9)都在使用CR,但最近的操作系统(OSX)没有。因此,就ruby而言,“CR作为换行符”并不存在。

简单的解释是,
\r
不是换行符,而是回车符。因此
chomp()
完全按照手册中的说明执行

详细的解释可以在维基百科页面上找到