ruby中 %W{}和%w{}的使用案例详解
%w{}是Ruby中的一种快捷方式,用于创建一个以空格分隔的字符串数组。例如,%w{apple banana cherry}将创建一个包含3个字符串元素的数组:[ apple , banana , cherry ]。这种写法比使用[ apple , banana , cherry ]要更简便,并且更易于阅读。
可以使用#{}结合变量来在%w{}中插入变量。例如,
file_name = "example.txt"file_data = %w{This is an example file #{file_name}}这将创建一个字符串数组 `file_data`,其中包含三个元素:"This"、"is"、"an"、"example"、"file"和"example.txt"。注意,#{file_name} 将会被替换成变量 `file_name` 的值。
这将创建一个字符串数组 `file_data`,其中包含三个元素: This 、 is 、 an 、 example 、 file 和 example.txt 。注意,#{file_name} 将会被替换成变量 `file_name` 的值。
在使用 %w 时,Ruby 会将字符串中的空格作为分隔符,将其拆分成一个字符串数组。在上面这个例子中,Ruby 会将 This is an example file #{file_name} 拆分为 This 、 is 、 an 、 example 、 file 和 \#{file_name} 这几个字符串,其中 \#{file_name} 并不会被解析为变量 file_name 的值。如果想要将 file_name 的值插入到字符串中,可以使用字符串插值的方式,例如:
file_data = %W{This is an example file #{file_name}}
注意,在使用 %W 时需要将字符串中的变量使用 #{} 包裹起来,这样 Ruby 才会在字符串中插入变量的值
%w{}和%W{}都是用来表示字符串数组的语法,区别在于%w{}默认以空格作为分隔符,而%W{}可以自定义分隔符。
例如:
arr1 = %w{apple banana orange}arr2 = %W[apple banana orange]arr3 = %w|apple banana orange|arr4 = %W(apple banana orange)puts arr1.inspect #= ["apple", "banana", "orange"]puts arr2.inspect #= ["apple", "banana", "orange"]puts arr3.inspect #= ["apple", "banana", "orange"]puts arr4.inspect #= ["apple", "banana", "orange"]
以上四个数组的输出结果都是一样的,因为它们都表示的是包含三个元素的字符串数组。但是使用了不同的分隔符。
另外需要注意的是,%w{}和%W{}中的字符串不需要使用引号括起来。例如:
arr5 = %w{I am a string}arr6 = %W{I am also a string}puts arr5.inspect #= ["I", "am", "a", "string"]puts arr6.inspect #= ["I", "am", "also", "a", "string"]
以上两个数组输出的结果也是一样的。
%s{String} 生成一个符号对象 %r{String} 创建一个正则表达式字面值 %x{String} 执行String所代表的命令
%{String} 创建一个使用双引号括起来的字符串 %Q{String} 创建一个使用双引号括起来的字符串 %q{String} 创建一个使用单引号括起来的字符串
%w{String} 将一个字符串以空白字符切分成一个字符串数组,进行较少替换(用单引号定义字符串一样,不会ruby解析) %W{String} 将一个字符串以空白字符切分成一个字符串数组,进行较多替换(用双引号定义字符串一样,可以ruby解析)
$ irb
irb(main):001:0 t = %s|test|
= :test
irb(main):002:0 t = %+test string+
= test string
irb(main):003:0 %Q[It is just test Q. so 1+2=#{1+2}]
= It is just test Q. so 1+2=3
irb(main):004:0 %q[It is just test q. so 1+2=#{1+2}]
= It is just test q. so 1+2=\#{1+2}
irb(main):005:0 %W[It is just test %W so 1+2=#{1+2}]
= [ It , is , just , test , %W , so , 1+2=3 ]
irb(main):006:0 %w[It is just test %w so 1+2=#{1+2}]
= [ It , is , just , test , %w , so , 1+2=\#{1+2} ]
irb(main):007:0
ruby中 %W{}和%w{}的使用案例详解