【问题标题】:Put + sign in front of positive numbers in ruby将 + 号放在 ruby​​ 中的正数前面
【发布时间】:2020-08-23 22:43:05
【问题描述】:

我喜欢在正数之前显示一个加号。示例

2.to_s
# returns +2

-2.to_s
# returns -2

【问题讨论】:

  • 你想在任何正数被字符串化时自动执行此操作吗?
  • 您遇到问题的代码是什么?你的代码有什么问题?您收到错误消息吗?错误信息是什么?你得到的结果不是你期望的结果吗?你期望什么结果,为什么,你得到的结果是什么,两者有什么不同?您正在观察的行为不是期望的行为吗?期望的行为是什么,为什么,观察到的行为是什么,它们有何不同?请提供minimal reproducible example。请注意Stack Overflow不是写代码服务,你需要努力!
  • 你想要+0 还是0? (鉴于零不是正数)

标签: ruby string number-formatting


【解决方案1】:

Kernel#sprintf+ 标志一起使用:

sprintf('%d', 11)
# 11
sprintf('%+d', 11)
# +11

或等效地,String#%:

'%+d<x>' % { x: 23 }
# +23

【讨论】:

    【解决方案2】:

    您可以对Numeric 使用相当直接的猴子补丁:

    class Numeric
      def to_ss   # to signed string
        self.negative? ? self.to_s : "+#{self.to_s}"
      end
    end
    
    2.to_ss   # => "+2"
    -2.to_ss  # => "-2"
    5.7.to_ss # => "+5.7"
    

    如果有更优雅的方法,我不会感到惊讶,但这是可行的。

    【讨论】:

    • 使用refinement,而不是猴子补丁。这是一个作用域猴子补丁。
    猜你喜欢
    • 2019-12-04
    • 1970-01-01
    • 2021-05-14
    • 1970-01-01
    • 2018-05-23
    • 2019-07-20
    • 1970-01-01
    • 1970-01-01
    • 2015-04-05
    相关资源
    最近更新 更多