# Capitalizing words

**URL:** <https://www.ruby-forum.com/t/capitalizing-words/108487>\
**Category:** Rails\
**Created:** [July 4, 2007, 12:04am UTC](https://www.ruby-forum.com/t/capitalizing-words/108487 "2007-07-04T00:04:45Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![raghus](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/958977/32.png) [@raghus](https://www.ruby-forum.com/u/raghus)\
**Post date:** [July 4, 2007, 12:04am UTC](https://www.ruby-forum.com/t/capitalizing-words/108487/1 "2007-07-04T00:04:45Z")

</div>

I am trying to write a function that converts something like “It’s a  
dog’s life” to “It’s A Dog’s Life”. I am doing this with string.gsub(/  
\b\w/) {$&.upcase} but this gives me “It’S A Dog’S Life” - how can I  
tell the regexp to ignore apostrophes when looking for a new word to  
capitalize?

---

<div class="post-metadata">

**Author:** ![raghus](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/958977/32.png) [@raghus](https://www.ruby-forum.com/u/raghus)\
**Post date:** [July 4, 2007, 12:08am UTC](https://www.ruby-forum.com/t/capitalizing-words/108487/2 "2007-07-04T00:08:46Z")

</div>

item.capitalize ??

–Scott T.

---

<div class="post-metadata">

**Author:** ![raghus](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/958977/32.png) [@raghus](https://www.ruby-forum.com/u/raghus)\
**Post date:** [July 4, 2007, 12:10am UTC](https://www.ruby-forum.com/t/capitalizing-words/108487/3 "2007-07-04T00:10:48Z")

</div>

[http://api.rubyonrails.org/classes/ActiveSupport/Multibyte/Handlers/UTF8Handler.html#M000289](http://api.rubyonrails.org/classes/ActiveSupport/Multibyte/Handlers/UTF8Handler.html#M000289)

---

<div class="post-metadata">

**Author:** ![raghus](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/958977/32.png) [@raghus](https://www.ruby-forum.com/u/raghus)\
**Post date:** [July 4, 2007, 1:11am UTC](https://www.ruby-forum.com/t/capitalizing-words/108487/4 "2007-07-04T01:11:51Z")

</div>

raghus wrote:

> I am trying to write a function that converts something like “It’s a  
> dog’s life” to “It’s A Dog’s Life”. I am doing this with string.gsub(/  
> \b\w/) {$&.upcase} but this gives me “It’S A Dog’S Life” - how can I  
> tell the regexp to ignore apostrophes when looking for a new word to  
> capitalize?

string.titleize will give you the same result you’re getting. Doesn’t  
help you at all with this problem, but, just for future reference.

But, back to the problem you’re having. This seems to do the trick.

string.gsub(/(^|[^\w’])([\w’])/) {$&.upcase}

–  
[http://www.5valleys.com/](http://www.5valleys.com/)

---

<div class="post-metadata">

**Author:** ![raghus](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/958977/32.png) [@raghus](https://www.ruby-forum.com/u/raghus)\
**Post date:** [July 4, 2007, 5:54am UTC](https://www.ruby-forum.com/t/capitalizing-words/108487/5 "2007-07-04T05:54:09Z")

</div>

Jon - ok that worked. Thank you. Thanks for the titleize tip as well.  
Scott - mystr.capitalize will capitalize just the first character - so  
I’d end up with “It’s a dog’s life” rather than “It’s A Dog’s Life”
