Sorry for the simple question, I just can't figure this out after a
couple hours...
I need to parse a string:
string = column-1:block-0,block-2,block-1,block-3
and I need to extract everything before the : (colon) into one variable
(should end up like this:
string1 = column-1
and then the rest of the string (block-0,block-2,block-1,block3) into an
array...
How can I use gsub to extract everything before the colon?
I've looked at the documentation and just can't understand how to use
the \` or \' syntax... I want the two new strings to be:
string1 = column-1
string2 = ["block-0", "block-2", "block-1", "block-3"]
I'm thinking it's something like this:
string.gsub(/:/, "\`")
really, I just don't get it...
the documentation that I'm looking at is here:
http://dev.rubycentral.com/ref/ref_c_string.html
thanks a bunch!
-Dustin
···
--
Posted via http://www.ruby-forum.com/.
Alle venerdì 30 marzo 2007, Dustin Anderson ha scritto:
Sorry for the simple question, I just can't figure this out after a
couple hours...
I need to parse a string:
string = column-1:block-0,block-2,block-1,block-3
and I need to extract everything before the : (colon) into one variable
(should end up like this:
string1 = column-1
and then the rest of the string (block-0,block-2,block-1,block3) into an
array...
How can I use gsub to extract everything before the colon?
I've looked at the documentation and just can't understand how to use
the \` or \' syntax... I want the two new strings to be:
string1 = column-1
string2 = ["block-0", "block-2", "block-1", "block-3"]
I'm thinking it's something like this:
string.gsub(/:/, "\`")
really, I just don't get it...
the documentation that I'm looking at is here:
http://dev.rubycentral.com/ref/ref_c_string.html
thanks a bunch!
-Dustin
I don't think you need gsub here. gsub is used to replace parts of a string
with other characters. What you need is a regexp. This should work:
string.match( /^([^:]*):(.*)$/ )
string1=$1
string2=$2.split(',')
The regexp will put anything from the beginning of the string until the
first : (excluded) in the global variable $1 and anything after the : in the
variable $2. You can then convert $2 to an array of string using the
String#split method.
I hope this helps
Stefano
Hello,
you could just use split:
split = string.split(':')
string1 = split[0]
string2 = split[1].split(',')
-- Kristoffer
···
On 3/30/07, Dustin Anderson <rubyforum@dustinanderson.com> wrote:
Sorry for the simple question, I just can't figure this out after a
couple hours...
I need to parse a string:
string = column-1:block-0,block-2,block-1,block-3
and I need to extract everything before the : (colon) into one variable
(should end up like this:
string1 = column-1
and then the rest of the string (block-0,block-2,block-1,block3) into an
array...
How can I use gsub to extract everything before the colon?
I've looked at the documentation and just can't understand how to use
the \` or \' syntax... I want the two new strings to be:
string1 = column-1
string2 = ["block-0", "block-2", "block-1", "block-3"]
I'm thinking it's something like this:
string.gsub(/:/, "\`")
really, I just don't get it...
the documentation that I'm looking at is here:
http://dev.rubycentral.com/ref/ref_c_string.html
thanks a bunch!
-Dustin
--
Posted via http://www.ruby-forum.com/\.
--
Kristoffer Lundén
kristoffer.lunden@gmail.com
kristoffer.lunden@gamemaker.nu
http://www.gamemaker.nu/
0704 48 98 77
Dustin Anderson wrote:
Sorry for the simple question, I just can't figure this out after a
couple hours...
I need to parse a string:
string = column-1:block-0,block-2,block-1,block-3
and I need to extract everything before the : (colon) into one variable
(should end up like this:
string1 = column-1
and then the rest of the string (block-0,block-2,block-1,block3) into an
array...
I'd use two calls to split:
irb(main):001:0> string = 'column-1:block-0,block-2,block-1,block-3'
=> "column-1:block-0,block-2,block-1,block-3"
irb(main):002:0> string1, s = string.split(':')
=> ["column-1", "block-0,block-2,block-1,block-3"]
irb(main):003:0> string1
=> "column-1"
irb(main):004:0> string2 = s.split(',')
=> ["block-0", "block-2", "block-1", "block-3"]
irb(main):005:0>
You could probably turn that into a one-liner but that's just golfing.
Here's a bit of "live" code that does the same thing (plus .to_f on the elements before turning them into a Vector, but you can knock that part out yourself)
def add line
id, vals = line.split(/:\s*/, 2)
@labels << id
@data << Vector[*(vals.split(',').map {|v| v.to_f})]
end
Note that the second arg (2) to split is important if a ':' can occur anywhere in your block-N parts. Of course, you just need vals.split(',')
-Rob
Rob Biedenharn http://agileconsultingllc.com
Rob@AgileConsultingLLC.com
···
On Mar 30, 2007, at 5:39 PM, Timothy Hunter wrote:
Dustin Anderson wrote:
Sorry for the simple question, I just can't figure this out after a
couple hours...
I need to parse a string:
string = column-1:block-0,block-2,block-1,block-3
and I need to extract everything before the : (colon) into one variable
(should end up like this:
string1 = column-1
and then the rest of the string (block-0,block-2,block-1,block3) into an
array...
I'd use two calls to split:
irb(main):001:0> string = 'column-1:block-0,block-2,block-1,block-3'
=> "column-1:block-0,block-2,block-1,block-3"
irb(main):002:0> string1, s = string.split(':')
=> ["column-1", "block-0,block-2,block-1,block-3"]
irb(main):003:0> string1
=> "column-1"
irb(main):004:0> string2 = s.split(',')
=> ["block-0", "block-2", "block-1", "block-3"]
irb(main):005:0>
You could probably turn that into a one-liner but that's just golfing.