Feature #8573
closedAdd String#format method(not an alias of String#%)
Description
I think it'd be great if String included a method similar to %
that accepts variable number of arguments (like sprintf
). This is trivial to implement as you're certainly aware.
Here's one implementation suggestion:
class String
def format(*args)
super(self, *(args.flatten))
end
end
This would make the new method behave both like sprintf/format
and String#%
. I think this minor improvement would definitely be in the spirit of making more programmers happy :-)
Here a bit more on the topic - http://batsov.com/articles/2013/06/27/the-elements-of-style-in-ruby-number-2-favor-sprintf-format-over-string-number-percent/
Updated by nobu (Nobuyoshi Nakada) almost 10 years ago
Do you mean this?
def format(*args)
sprintf(self, *args)
end
or
def format(*args)
self % args
end
Updated by naruse (Yui NARUSE) almost 10 years ago
- Status changed from Open to Feedback
- Priority changed from 3 to Normal
- Target version changed from 2.1.0 to 2.6
Show concrete use case.
Updated by bozhidar (Bozhidar Batsov) over 5 years ago
naruse (Yui NARUSE) wrote:
Show concrete use case.
How about simply:
"Hello, %s %s!".format("Mr.", "Bond")
Updated by bozhidar (Bozhidar Batsov) over 5 years ago
nobu (Nobuyoshi Nakada) wrote:
Do you mean this?
def format(*args) sprintf(self, *args) end
or
def format(*args) self % args end
I'd prefer something implemented in terms of sprintf.
Updated by shyouhei (Shyouhei Urabe) over 5 years ago
bozhidar (Bozhidar Batsov) wrote:
naruse (Yui NARUSE) wrote:
Show concrete use case.
How about simply:
"Hello, %s %s!".format("Mr.", "Bond")
That's too simple. What we need is how the requested feature improves the situation. What's wrong with the status-quo? and how is that relaxed using String#format
?