Aravind.HU
Aravind.HU

Reputation: 9472

How can I upcase first occurrence of an alphabet in alphanumeric string?

Is there any easy way to convert strings like 3500goat to 3500Goat and goat350rat to Goat350rat?

I am trying to convert the first occurrence of alphabet in an alphanumeric string to uppercase. I was trying the code below using the method sub, but no luck.

stringtomigrate = 3500goat

stringtomigrate.sub!(/\D{0,1}/) do |w|
      w.capitalize

Upvotes: 1

Views: 88

Answers (2)

anusha
anusha

Reputation: 2135

Try this

1.9.3-p545 :060 > require 'active_support/core_ext'
 => true 
1.9.3-p545 :099 > "goat350rat to Goat350rat".sub(/[a-zA-Z]/){ |x| x.titleize}
 => "Goat350rat to Goat350rat"

Upvotes: 1

Marek Lipka
Marek Lipka

Reputation: 51171

This should work:

string.sub(/[a-zA-Z]/) { |s| s.upcase }

or a shorthand:

string.sub(/[a-zA-Z]/, &:upcase)

examples:

'3500goat'.sub(/[a-zA-Z]/, &:upcase)
# => "3500Goat"
'goat350rat'.sub(/[a-zA-Z]/, &:upcase)
# => "Goat350rat"

Upvotes: 6

Related Questions