split not returning an array?

A

Amanda ..

Hi there, I start out with a string containing at least 1 '+' separating
words in it. I'm trying to get an array using str.split('+'), so I can
use each word to do something different.

So for example, I have string = "science+students"
Now I want an array: ["science", "students"]

Problem is, when I do string.split('+'), I'm getting a single string
with the '+' removed, so if I do:

@cmds = @string.split('+')

for @item in @cmds
puts 1
end

'1' is only outputted once, and if I just print out @cmds, I get
"science students" (I used this to see how many items were in the
'array')

Can anyone explain to me what's happening here? It looks like the split
method is returning the original strings without the '+' characters, and
not an array as it should be...

Thanks for any help!
 
G

Glen Holcomb

[Note: parts of this message were removed to make it a legal post.]

Hi there, I start out with a string containing at least 1 '+' separating
words in it. I'm trying to get an array using str.split('+'), so I can
use each word to do something different.

So for example, I have string = "science+students"
Now I want an array: ["science", "students"]

Problem is, when I do string.split('+'), I'm getting a single string
with the '+' removed, so if I do:

@cmds = @string.split('+')

for @item in @cmds
puts 1
end

'1' is only outputted once, and if I just print out @cmds, I get
"science students" (I used this to see how many items were in the
'array')

Can anyone explain to me what's happening here? It looks like the split
method is returning the original strings without the '+' characters, and
not an array as it should be...

Thanks for any help!
split behaves exactly as documented for me. What is the full section of
code where this is happening? Does:

string = "science+students"
string.split('+')

return ["science", "students"]

in irb on your machine?
 
F

Farrel Lifson

2008/8/25 Amanda .. said:
Can anyone explain to me what's happening here? It looks like the split
method is returning the original strings without the '+' characters, and
not an array as it should be...

I have a feeling you're dealing with data that has passed through
CGI.unescape somewhere before you called split on it:

irb(main):006:0> CGI.uescape('science+students')
=> "science students"

Farrel
 
J

Jesús Gabriel y Galán

Hi there, I start out with a string containing at least 1 '+' separating
words in it. I'm trying to get an array using str.split('+'), so I can
use each word to do something different.

So for example, I have string = "science+students"
Now I want an array: ["science", "students"]

Problem is, when I do string.split('+'), I'm getting a single string
with the '+' removed, so if I do:

@cmds = @string.split('+')

for @item in @cmds
puts 1
end

'1' is only outputted once, and if I just print out @cmds, I get
"science students" (I used this to see how many items were in the
'array')

Can anyone explain to me what's happening here? It looks like the split
method is returning the original strings without the '+' characters, and
not an array as it should be...

Your code works perfectly, see below, so my only theory is that
@string doesn't have what you think it has.
Can you print it before the split?

irb(main):021:0> @string = "science+students"
=> "science+students"
irb(main):022:0> @cmds = @string.split('+')
=> ["science", "students"]
irb(main):023:0> for @item in @cmds
irb(main):024:1> puts 1
irb(main):025:1> end
1
1
=> ["science", "students"]

Jesus.
 
A

Amanda ..

Okay you're all right, before the split it's already "science students"
... how can I stop that from happening?

I'm pulling it in through a URL for a calendar/events site. The URL
determines what calendars to pull events from (ie science and students),
so I have params[:cal] that's supposed to store the string. Why is it
unescaping it for me?

Should I just do a gsub!(' ', '+') maybe?

Thanks for helping so fast!
 
G

Glen Holcomb

[Note: parts of this message were removed to make it a legal post.]

Okay you're all right, before the split it's already "science students"
... how can I stop that from happening?

I'm pulling it in through a URL for a calendar/events site. The URL
determines what calendars to pull events from (ie science and students),
so I have params[:cal] that's supposed to store the string. Why is it
unescaping it for me?

Should I just do a gsub!(' ', '+') maybe?

Thanks for helping so fast!
You could just split(' ')
 
A

Amanda ..

Glen said:
You could just split(' ')

--
"Hey brother Christian with your high and mighty errand, Your actions
speak
so loud, I can't hear a word you're saying."

-Greg Graffin (Bad Religion)

Problem with that is some of the calendars have spaces in their names
(ie General Public) so I have it set up so that people have to put a '-'
wherever there's a space in a name, then I gsub('-', ' ') afterwards.
I'm trying to do a gsub(' ', '+'), and then the gsub('-', ' ').
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,776
Messages
2,569,603
Members
45,197
Latest member
ScottChare

Latest Threads

Top