在运行时输入中使用%w

时间:2014-07-05 12:55:36

标签: ruby arrays string words

我尝试在运行时使用%w字符串输入。当我运行这个程序时:

a = gets.chomp
puts %w(a).count

输入'hi how are you',输出为1%w(a).count不会使用输入字符串替换a

虽然%w(hi how are you).length4,但%w(a)a视为单个实体,其count值为1

如何为运行时输入的字符串打印长度4或任何数字?

2 个答案:

答案 0 :(得分:2)

您可以使用String#split

例如:

a = "hi how are you"
a.split(" ").size

答案 1 :(得分:0)

虽然%W进行插值(%w没有插值),但的行为与split的文字字符串相似。您可以在this blog post中看到一个示例:

  

而且我以为我也知道%W - 这显然会起作用   就像%w一样,除了评估里面的代码。除了那不是什么   它呢! %W[foo #{bar}]不是"foo #{bar}".split - 它是["foo", "#{bar}"]!   当然,使用真正的解析器,所以你可以使用尽可能多的解析器   可以根据需要在代码块中使用空格。

system *%W[mongod --shardsvr --port #{port} --fork --dbpath #{data_dir}
--logappend --logpath #{logpath} --directoryperdb]

所以在你的情况下:

a = 'hi how are you'
%W(#{a})
# => ["hi how are you"]

因此,您的点数仍为1

获取4的正确方法是使用split ...