【问题标题】:delete dash character which is at the end of the string删除字符串末尾的破折号
【发布时间】:2016-06-28 11:42:41
【问题描述】:

所以我的数据库中有表格项目。 我想在 Item.name 中替换 - 字符,它位于 Item.name 的末尾 所以我尝试这样做:

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

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

更新: 我设法做到了:

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

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

【问题讨论】:

  • 为什么在不需要的时候尝试使用正则表达式? :)

标签: ruby-on-rails


【解决方案1】:

你可以试试sub!ruby的功能。

例如。

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

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

【讨论】:

    【解决方案2】:

    试试下面的方法,它肯定适合你。

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

    【讨论】:

    • 这将删除name字符串中任何位置的破折号,而不仅仅是结尾。
    【解决方案3】:

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

    所以你只需要使用chomp 方法:

    在你的例子中:

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

    【讨论】:

      【解决方案4】:

      你应该像这样使用:

      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
      

      【讨论】:

      • 我只需要替换位于字符串末尾的- 字符!您的函数将替换所有 - 字符!
      • 我对我的代码做了一些更改,请确保
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-08
      • 1970-01-01
      • 1970-01-01
      • 2012-05-20
      • 1970-01-01
      相关资源
      最近更新 更多