Forum: Ruby How to capitalize first word of a string?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Rails L. (Guest)
on 2009-06-04 23:41
I have a string that I would like to capitalize and add bold html tag to
the first word only.  How do i do it?.  Do I have to split first and
then "upcase!" it then join again.  Not sure how to do it.  any help is
much appreciated. thanks
Robert K. (Guest)
on 2009-06-05 00:50
(Received via mailing list)
On 04.06.2009 21:41, Rails L. wrote:
> I have a string that I would like to capitalize and add bold html tag to
> the first word only.  How do i do it?.  Do I have to split first and
> then "upcase!" it then join again.  Not sure how to do it.  any help is
> much appreciated. thanks

Do you mean

irb(main):003:0> words = "foo bar baz"
=> "foo bar baz"
irb(main):004:0> words.sub(/\w+/) {|m| "<b>#{m.upcase}</b>"}
=> "<b>FOO</b> bar baz"
irb(main):005:0> words.sub(/\w+/) {|m| "<b>#{m.capitalize}</b>"}
=> "<b>Foo</b> bar baz"
irb(main):006:0>

Kind regards

  robert
matt neuburg (Guest)
on 2009-06-05 00:51
(Received via mailing list)
Rails L. <removed_email_address@domain.invalid> wrote:

> I have a string that I would like to capitalize and add bold html tag to
> the first word only.  How do i do it?.  Do I have to split first and
> then "upcase!" it then join again.  Not sure how to do it.  any help is
> much appreciated. thanks

Sure, that's a good way. A little-known feature of "split" is the
"limit" parameter, so you can split off just the first word without
affecting anything else:

arr = s.split(" ", 2)
arr[0].upcase! # and anything else you feel like
s = arr.join(" ")

m.
Robert H. (Guest)
on 2009-06-05 02:54
>  A little-known feature of "split" is the "limit" parameter

Didn't know that one. :)
Rails L. (Guest)
on 2009-06-05 21:37
Marc H. wrote:
>>  A little-known feature of "split" is the "limit" parameter
>
> Didn't know that one. :)

Thanks for taking time to reply. much appreciated.

Is there any way, I can capitalize the string and simultaneously convert
the first word to bold.

right now, i am splitting

str.split(/\s+/).each{ |word| word.capitalize! } then upcase of str[0]
and then str.each{ |word| }.join(' ')
This topic is locked and can not be replied to.