【问题标题】:How to use gsub to remove . at the end of the string in ruby?如何使用 gsub 删除 .在红宝石字符串的末尾?
【发布时间】:2019-06-13 13:37:29
【问题描述】:

我需要删除字符串末尾的所有特殊字符,这些特殊字符有时会出现有时不会出现。

我已经写了这个.gsub(/[,()'"]./,''),但它没有从字符串中删除.(句号)。

你能告诉我这有什么问题吗?

【问题讨论】:

  • 您的意思是写.gsub(/[,()'".]/,'')?使用字符类中的点?可以用\z 指定字符串的结尾。尝试.gsub(/[,()'".]+\z/,'') 删除字符串末尾字符类中的 1 个或多个字符。几个具有预期输出的示例字符串会有所帮助。
  • 谢谢,它的工作方式正是我需要的。
  • 更多标签并不比更少标签好。您应该只包括那些读者可能会搜索或排除在搜索之外的内容。在此基础上,我建议您删除“string”、“substring”和“gsub”。这不是 Rails 问题,因此应该删除“ruby-on-rails”。您缺少的一个是“正则表达式”。因此,我建议您的标签是“ruby”和“regex”。此外,Ruby 没有为“特殊字符”提供定义,因此您应该在问题中定义该术语(或者只列出充电器而不给它们命名)。它们可能是从您的正则表达式中推断出来的,但最好是明确的。

标签: ruby-on-rails ruby string substring gsub


【解决方案1】:

必须是.gsub吗?

String#delete_suffix 可能更简单。

my_string.delete_suffix '.'

【讨论】:

  • 是的,因为字符串末尾可以包含, . " ' /
  • 更新了答案。 delete_suffix 是你想要的。
  • 这只会删除一个尾随 . - '"/, 或多次出现呢?
  • @Stefan:OP 提出了两个不同的问题,1)如何删除字符串末尾的 .,以及 2)如何删除字符串末尾的特殊字符。这个答案正在回答前一个问题。 IMO,不应该回答提出两个不同问题的问题,而是以“不清楚你在问什么”而结束,但这个答案至少是对 OP 提出的第一个问题的有效答案。
  • @JörgWMittag OP 想要删除某些特殊字符。正则表达式几乎可以工作,它删除了除. 之外的所有内容,因此是问题的标题。
【解决方案2】:

你可以使用

.gsub(/[,()'".]+\z/,'')

点必须放在字符类中,否定字符类必须用+ 量化(出现1 次或多次),并且应该添加\z 锚以断言字符串末尾的位置。

请参阅Rubular demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-29
    • 1970-01-01
    • 2013-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-11
    • 2011-01-21
    相关资源
    最近更新 更多