\nnn nnn表示一个八进制数值,替换成该八进制所对应的字符
\b 退格符,替换成退格键所对应的字符
\xnn xnn表示一个十六进制数,替换成该十六进制数所对应的字符
\e 替换成Escape键对应的字符
\cx替换成Ctrl+X组合键对应的字符,其中x可以是任意键对应的字符
\C-x 替换成Ctrl+X组合键对应的字符,其中x可以是任意键对应的字符
\n 换行符,替换成一个空行
\M-x 替换成Alt+X组合键对应的字符,其中x可以是任意键对应的字符
\r 回车符,替换成一个回车
\M-\C-x 替换成Ctrl+Alt+X组合键对应的字符,其中x可以是任意键对应的字符
\s 空白符,替换成一个空白字符
\t 替换成一个Tab键所对应的字符
\v 替换成一个垂直Tab键所对应的字符
#{expr}替换成变量或者表达式expr所对应的值
(1)puts会识别双引号内的转义符,并自动换行(2)p不会识别双引号内的转义符,并自动换行
(3)print会识别双引号内的转义符,不自动换行
点击(此处)折叠或打开
irb(main):003:0>puts "a", "\nb"
a
b
=>nil
irb(main):004:0>p "a", "\nb"
"a"
"\nb"
=>nil
irb(main):005:0>print "a", "\nb"
a
b=>nil
共同点:都是用来屏幕输出的。不同点:
puts 输出内容后,会自动换行(如果内容参数为空,则仅输出一个换行符号);另外如果内容参数中有转义符,输出时将先处理转义再输出
p 基本与puts相同,但不会处理参数中的转义符号
print 基本与puts相同,但输出内容后,不会自动在结尾加上换行符
s = "aaaa\nbb\tbb"
p s
p "****************"
puts s
p "****************"
print s
输出结果为:
"aaaa\nbb\tbb"
"****************"
aaaa
bb bb
"****************"
aaaa
bb bbend
另外,当ruby源程序使用utf-8编码时,用p汉字时会转换成unicode值
s ="中"
p s
puts s
print s
运行结果:
"\u4E2D"
中
中