Ruby String(2)

来源:互联网 发布:焊接机器人编程 编辑:程序博客网 时间:2024/05/24 04:49

String In Ruby


1. common string

在Ruby中可以有多种方式表达String,如下,用double quotes 和single quotes.

puts "sleep tight"
puts 'sleep tight'
但是两个的在转义方面有所不同,single quotes只用来定义常量字符串,并且只会多backslash和single quote进行转义,如下:

\'\\

但是double quotes会对内部的变量进行计算并填充其值到字符串,除此之外多多种特殊字符进行转义。如下:

puts "Enter name"name = gets.chompputs "Your name is #{name}"

转义字符如下:
\" − double quote\\ − single backslash\a − bell/alert\b − backspace11\r − carriage return12\n − newline13\s − space14\t − tab


其中\a需要多提一下,它是用来发出beep声音的,大家可以在irb中试试。下面的代码:

2. alternate quotes

另外还有两种方法来替代单双引号,一个是%q, %q相当于单引号,可以用其他delemiter来作为string litreal 的解释和开始标志,如下:

puts %q!c:\napolean's documents\tomorrow's bus schedule.txt!puts %q/c:\napolean's documents\tomorrow's bus schedule.txt/puts %qˆc:\napolean's documents\tomorrow's bus schedule.txtˆputs %q(c:\napolean's documents\tomorrow's bus schedule.txt)puts %q{c:\napolean's documents\tomorrow's bus schedule.txt}puts %q<c:\napolean's documents\tomorrow's bus schedule.txt>

另外一个是%Q,相当于双引号:如下所示:
name = 'Charlie Brown'puts %Q!Say "Hello," #{name}.!puts %Q/What is "4 plus 5"? Answer: #{4+5}/


3.Here Document

当想要定义多行的字符文字时,可以使用<<符号,后加一个字符开始标志来定义。如下

puts <<GROCERY_LISTGrocery list------------1. Salad mix.2. Strawberries.*3. Cereal.4. Milk.** OrganicGROCERY_LIST

上面的例子中,GROCERY_LIST为字符开始与结束标志。

有时需要加上多个document时,可以将文档写在一起并用结束标志来分割,如下所示,puts的第三个和第六个参数为document.
puts 'Produce', '-------', <<PRODUCE, 'Dairy', '-----', <<DAIRY, '*Organic'1. Strawberries*2. BlueberriesPRODUCE1. Yogurt2. Milk*3. Cottage CheeseDAIRY


有点需要注意的是,document会将中间的literal string进行转换,就像double quote一样,如果不需要转换,需要将identifier用单引号引起来。

如下第一个会转换,第二个不会转换。
name="Hellen"puts <<"QUIZ"Student: #{name}1.\tQuestion: What is 4+5?\tAnswer: The sum of 4 and 5 is #{4+5}QUIZputs <<'QUIZ'Student: #{name}1.\tQuestion: What is 4+5?\tAnswer: The sum of 4 and 5 is #{4+5}QUIZ


Print In Ruby


puts print 都可以用来打印输出到终端,区别在于puts会在每个参数后面加上换行,而print不会,需要显示的调用\n. 如下:
puts "Hello!", "My", "Name", "is", "HaHa"print "Hello!", "My", "Name", "is", "HaHa"#outputHello!MyNameisHaHaHello!MyNameisHaHa



0 0
原创粉丝点击