# Is there a method for incrementing string names?!?

**URL:** <https://www.ruby-forum.com/t/is-there-a-method-for-incrementing-string-names/60354>\
**Category:** Rails\
**Created:** [May 12, 2006, 3:51pm UTC](https://www.ruby-forum.com/t/is-there-a-method-for-incrementing-string-names/60354 "2006-05-12T15:51:51Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Human\_D](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/edb3f5/32.png) [@Human\_D](https://www.ruby-forum.com/u/Human_D)\
**Post date:** [May 12, 2006, 3:51pm UTC](https://www.ruby-forum.com/t/is-there-a-method-for-incrementing-string-names/60354/1 "2006-05-12T15:51:51Z")

</div>

Hello,  
I have model which has a property named “name”, I want to append a  
number to the end of the name when there is similar name in db.

name, name1, name2…

Is there a ready to use method in ruby and/or rails for doing so?

Thanks in advance,

- Dunnil

---

<div class="post-metadata">

**Author:** ![Human\_D](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/edb3f5/32.png) [@Human\_D](https://www.ruby-forum.com/u/Human_D)\
**Post date:** [May 12, 2006, 5:07pm UTC](https://www.ruby-forum.com/t/is-there-a-method-for-incrementing-string-names/60354/2 "2006-05-12T17:07:09Z")

</div>

Check out String#next

---

<div class="post-metadata">

**Author:** ![Human\_D](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/edb3f5/32.png) [@Human\_D](https://www.ruby-forum.com/u/Human_D)\
**Post date:** [May 12, 2006, 6:04pm UTC](https://www.ruby-forum.com/t/is-there-a-method-for-incrementing-string-names/60354/3 "2006-05-12T18:04:51Z")

</div>

I found my answer on the ruby-talk by C Erler [1]:

class String  
def inc  
parts =3D scan(/^(.\*\D)?(\d+)?$/).first  
“#{parts.first}#{parts.last.to\_i + 1}”  
end  
end

[1] [http://www.ruby-talk.org/cgi-bin/scat.rb/ruby/ruby-talk/192523](http://www.ruby-talk.org/cgi-bin/scat.rb/ruby/ruby-talk/192523)

---

<div class="post-metadata">

**Author:** ![Human\_D](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/edb3f5/32.png) [@Human\_D](https://www.ruby-forum.com/u/Human_D)\
**Post date:** [May 13, 2006, 12:58am UTC](https://www.ruby-forum.com/t/is-there-a-method-for-incrementing-string-names/60354/4 "2006-05-13T00:58:14Z")

</div>

Human D. wrote:

> On 5/12/06, Daniel B.  
> [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:
> 
> > Check out String#next

Why didn’t you like Daniel’s answer?

irb(main):003:0\> a = “name1”  
=\> “name1”  
irb(main):004:0\> a.next  
=\> “name2”  
irb(main):005:0\> a.next.next  
=\> “name3”

It seems to be exactly what you were asking for.

–

Ray

---

<div class="post-metadata">

**Author:** ![Human\_D](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/edb3f5/32.png) [@Human\_D](https://www.ruby-forum.com/u/Human_D)\
**Post date:** [May 13, 2006, 1:36am UTC](https://www.ruby-forum.com/t/is-there-a-method-for-incrementing-string-names/60354/5 "2006-05-13T01:36:00Z")

</div>

Ezra Z. wrote:

> That way it falls on its face when you go above number nine.
> 
> ez webrate $ irb  
> irb(main):001:0\> a = ‘name9’  
> =\> “name9”  
> irb(main):002:0\> a.next  
> =\> “namf0”

Hah! Ruby has surprised me.

Here are three more good ones:

irb(main):012:0\> a = “name-9”  
=\> “name-9”  
irb(main):013:0\> a.next  
=\> “namf-0”  
irb(main):014:0\> a = “name-”  
=\> “name-”  
irb(main):015:0\> a.next  
=\> “namf-”  
irb(main):018:0\> a = “----”  
=\> “----”  
irb(main):019:0\> a.next  
=\> “—.”

Thanks, I’ll be careful with next.

–

Ray

---

<div class="post-metadata">

**Author:** ![Human\_D](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/edb3f5/32.png) [@Human\_D](https://www.ruby-forum.com/u/Human_D)\
**Post date:** [May 13, 2006, 1:04am UTC](https://www.ruby-forum.com/t/is-there-a-method-for-incrementing-string-names/60354/6 "2006-05-13T01:04:37Z")

</div>

On May 12, 2006, at 3:55 PM, Ray B. wrote:

> > > Check out String#next  
> > > It seems to be exactly what you were asking for.
> 
> –
> 
> Ray

That way it falls on its face when you go above number nine.

ez webrate $ irb  
irb(main):001:0\> a = ‘name9’  
=\> “name9”  
irb(main):002:0\> a.next  
=\> “namf0”

-Ezra
