Dan
Dan

Reputation: 915

Suppress delimiters in Ruby's String#split

I'm importing data from old spreadsheets into a database using rails.

I have one column that contains a list on each row, that are sometimes formatted as

first, second

and other times like this

third and fourth

So I wanted to split up this string into an array, delimiting either with a comma or with the word "and". I tried

my_string.split /\s?(\,|and)\s?/

Unfortunately, as the docs say:

If pattern contains groups, the respective matches will be returned in the array as well.

Which means that I get back an array that looks like

[
[0] "first"
[1] ", "
[2] "second"
]

Obviously only the zeroth and second elements are useful to me. What do you recommend as the neatest way of achieving what I'm trying to do?

Upvotes: 0

Views: 97

Answers (1)

Simone Carletti
Simone Carletti

Reputation: 176352

You can instruct the regexp to not capture the group using ?:.

my_string.split(/\s?(?:\,|and)\s?/)
# => ["first", "second"] 

As an aside note

into a database using rails.

Please note this has nothing to do with Rails, that's Ruby.

Upvotes: 3

Related Questions