e
结尾,则将a
添加到数组元素(符号数组);如果元素以{结尾,则添加s
{1}}。
不使用gsub或sub我可以做到这一点:
i
但是,使用arbitrary = [:alpha, :beta, :kappa, :phi]
p arbitrary
def pluralise (array)
manipulate = []
array.each {|member|
string = member.to_s
last_char = string[-1,1]
if last_char == "a" then
string = string + "e"
manipulate << string.to_sym
end
if last_char == "i" then
string = string + "s"
manipulate << string.to_sym
end
}
manipulate
end
new_arbitrary = pluralise(arbitrary)
p new_arbitrary
或gsub
尝试此操作不会更改数组:
sub
有没有人知道这里出了什么问题?
由于
答案 0 :(得分:2)
将行string.gsub(string, string + "s")
修改为string.gsub!(string, string + "s")
。它会起作用。
String#gsub
适用于接收器的副本,其中String.gsub!
适用于接收器本身。
答案 1 :(得分:1)
您可以在map和case语句中对数组进行整个查找和替换。
[:alpha, :beta, :kappa, :phi].map do |v|
v = v.to_s
case v[-1]
when 'a' then v + 'e'
when 'i' then v + 's'
else v
end
end