# I need something better than split

**URL:** <https://www.ruby-forum.com/t/i-need-something-better-than-split/139162>\
**Category:** Rails\
**Created:** [May 31, 2008, 7:03pm UTC](https://www.ruby-forum.com/t/i-need-something-better-than-split/139162 "2008-05-31T19:03:50Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![craigrails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c2a13f/32.png) [@craigrails](https://www.ruby-forum.com/u/craigrails)\
**Post date:** [May 31, 2008, 7:03pm UTC](https://www.ruby-forum.com/t/i-need-something-better-than-split/139162/1 "2008-05-31T19:03:50Z")

</div>

With params[:action] = “edit\_facilities”, this works…

params[:action].split(’\_’)[1]

but not with params[:action] = “edit\_board\_volunteer” because it splits  
at each underscore

How can I get everything after the first underscore character?

Craig

---

<div class="post-metadata">

**Author:** ![craigrails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c2a13f/32.png) [@craigrails](https://www.ruby-forum.com/u/craigrails)\
**Post date:** [May 31, 2008, 7:25pm UTC](https://www.ruby-forum.com/t/i-need-something-better-than-split/139162/2 "2008-05-31T19:25:53Z")

</div>

Craig W. wrote:

> With params[:action] = “edit\_facilities”, this works…
> 
> params[:action].split(’\_’)[1]
> 
> but not with params[:action] = “edit\_board\_volunteer” because it splits  
> at each underscore
> 
> How can I get everything after the first underscore character?
> 
> Craig

Hi Craig,

You can try

a = params[:action]  
a.split(’\_’)[1…a.length]

When I try that with ‘edit\_board\_volunteer’, I get

> > s = ‘edit\_board\_volunteer’  
> > =\> “edit\_board\_volunteer”
> 
> > s.split(’\_’)[1…s.length]  
> > =\> [“board”, “volunteer”]

Peace,  
Phillip

---

<div class="post-metadata">

**Author:** ![craigrails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c2a13f/32.png) [@craigrails](https://www.ruby-forum.com/u/craigrails)\
**Post date:** [May 31, 2008, 7:39pm UTC](https://www.ruby-forum.com/t/i-need-something-better-than-split/139162/3 "2008-05-31T19:39:39Z")

</div>

On 31 May 2008, at 18:25, Phillip K. wrote:

> > How can I get everything after the first underscore character?
> > 
> > Craig
> 
> Hi Craig,
> 
> You can try
> 
> a = params[:action]  
> a.split(’\_’)[1…a.length]

or a.match(/[^_]\*_(.\*)/)[1]

Fred

---

<div class="post-metadata">

**Author:** ![craigrails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c2a13f/32.png) [@craigrails](https://www.ruby-forum.com/u/craigrails)\
**Post date:** [May 31, 2008, 8:53pm UTC](https://www.ruby-forum.com/t/i-need-something-better-than-split/139162/4 "2008-05-31T20:53:04Z")

</div>

On Sat, 31 May 2008 10:02:17 -0700  
Craig W. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Craig

params[:action].split(‘\_’,2)

Splits into at most two array entries.

> > “edit\_board\_volunteer”.split(‘\_’,2)  
> > =\> [“edit”, “board\_volunteer”]

Regard,  
Jon

---

<div class="post-metadata">

**Author:** ![craigrails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c2a13f/32.png) [@craigrails](https://www.ruby-forum.com/u/craigrails)\
**Post date:** [May 31, 2008, 9:14pm UTC](https://www.ruby-forum.com/t/i-need-something-better-than-split/139162/5 "2008-05-31T21:14:49Z")

</div>

On Sat, 2008-05-31 at 19:52 +0100, Jonathan Stott wrote:

> > 
> 
> =\> [“edit”, “board\_volunteer”]

* * *

bing!

much nicer/prettier than

(params[:action].split(’_’)[2] == nil ? params[:action].split(’_’)[1] :  
params[:action].split(’_’)[1] + "_" + params[:action].split(’\_’)[2])

Thanks

Craig
