删除位于字符串末尾的破折号字符

时间:2016-06-28 11:42:42

标签: ruby-on-rails

所以我的数据库中有表项。 我想在Item.name中替换-末尾的Item.name字符 所以我试着这样做:

 items = Item.all
 items.each do |it|
 it.name=it.name.gsub('/\-$/','')
 it.save
 end

但它不起作用。我该怎么办?

UPD: 我设法做到了这样:

i = Item.all
 i.each do |it|
 it.name=it.name.chomp('-')
 it.save
 end

但仍然不明白为什么第一个变种不起作用

4 个答案:

答案 0 :(得分:0)

尝试下面的一个,它肯定会为你工作。

items = Item.all
 items.each do |item|
 item.name = item.name.gsub('-','')
 it.save
 end

答案 1 :(得分:0)

你应该使用:

items = Item.all
 items.each do |it|
 if name.end_with? '-'
   it.name=it.name[0..-2]
 else
   it.name=it.name
 end
 it.save
 end

或者你应该使用这个

 items = Item.all
 items.each do |it|
 it.name=it.name.chomp('-')  
 it.save
 end

答案 2 :(得分:0)

看一下这个答案:Ruby, remove last N characters from a string?

因此您只需使用chomp方法:

在你的例子中:

items = Item.all
items.each do |it|
it.name=it.name.chomp
it.save
end

答案 3 :(得分:0)

您可以尝试使用ruby的sub!功能。

实施例。

  

it.name.sub(" - """)!

!表示为Bang方法,因此您无需再次将其存储在item对象上。