在给定索引数组的情况下输出数组的值

时间:2017-12-15 17:05:33

标签: arrays ruby string loops

给定一个像words = ["hello", ", ", "world", "!"]这样的数组,我需要操作由字母组成的元素,所以我最后会得到一个字符串,例如"*hello*, *world*!"

我设法从数组中检索包含使用words.map.with_index { |element, index| index if element[[/a-zA-Z+/]] == element }.compact的字母的索引,这些索引是[0, 2]

我如何在函数中使用这些索引,以便我可以操作单词?

3 个答案:

答案 0 :(得分:2)

你不需要索引。如果您希望能够将任意逻辑应用于每个数组元素,请使用不带索引的map

words.map{|w| w.gsub(/[a-zA-Z]+/,'*\0*')}.join

正如其他人所指出的那样,对于你给出的例子,你根本不需要处理数组,只需先将它连接成一个字符串。例如:

words.join.gsub(/[a-zA-Z]+/,'*\0*')

答案 1 :(得分:0)

尝试使用Regexp,这将使您的工作变得轻松。您可以在数组

中获取元素后对其进行操作
words = ["hello", ", ", "world", "!"]
array = []
words.each do |a|
  array << a if /\w/.match(a)
end

puts array

hello
world

答案 2 :(得分:0)

words.reject { |word| word.match?(/\p{^L}/) }.
      map { |word| "*%s*" % word }.
      join(', ')
  #=> "*hello*, *world*"