using step backward ?

J

Josselin

I have an array myArray = ["22", "31", "56", "89", "47"]

I would like to produce a string like : "22#31#56#89>47<" where the
last item must be : >last_item<

case 1 item : ["22"] => ">22<"
case 2 items : ["22", "31"] => "22#>31<"
...
case n items : ["22", "31", "56", .........., "89", "47"] =>
"22#31#56#...........#89>47<"

as it's always the last items getting special treatment I thought
starting with " >"+myArray.last +"< " then
using 1.step(myArray.length-1, -1) do {..... put # after item } and
concatenate if myArray.length > 1
but I cannot get it right... I cannot get simple

tfyh

joss
 
O

Olivier Renaud

Le samedi 24 f=E9vrier 2007 19:00, Josselin a =E9crit=A0:
I have an array myArray =3D ["22", "31", "56", "89", "47"]

I would like to produce a string like : "22#31#56#89>47<" where the
last item must be : >last_item<

case 1 item : ["22"] =3D> ">22<"
case 2 items : ["22", "31"] =3D> "22#>31<"
..
case n items : ["22", "31", "56", .........., "89", "47"] =3D>
"22#31#56#...........#89>47<"

as it's always the last items getting special treatment I thought
starting with " >"+myArray.last +"< " then
using 1.step(myArray.length-1, -1) do {..... put # after item } and
concatenate if myArray.length > 1
but I cannot get it right... I cannot get simple

tfyh

joss

You may want to use Array#slice and Array#join to do that. And, as you said=
,=20
make a special treatment for the last element.

=2D-=20
Olivier Renaud
 
P

Phrogz

I have an array myArray = ["22", "31", "56", "89", "47"]

I would like to produce a string like : "22#31#56#89>47<" where the
last item must be : >last_item<

irb(main):001:0> myArray = ["22", "31", "56", "89", "47"]
=> ["22", "31", "56", "89", "47"]
irb(main):002:0> last = myArray.pop
=> "47"
irb(main):003:0> myArray.join('#')+">#{last}<"
=> "22#31#56#89>47<"
 
J

Josselin

I have an array myArray = ["22", "31", "56", "89", "47"]

I would like to produce a string like : "22#31#56#89>47<" where the
last item must be : >last_item<

irb(main):001:0> myArray = ["22", "31", "56", "89", "47"]
=> ["22", "31", "56", "89", "47"]
irb(main):002:0> last = myArray.pop
=> "47"
irb(main):003:0> myArray.join('#')+">#{last}<"
=> "22#31#56#89>47<"

thanks it runs well for 1or n > 2 items but not for 2 items

myArray = ["22", "31"]
=> ["22", "31"]
irb(main):002:0> last = myArray.pop
=> "31"
irb(main):003:0> myArray.join('#')+">#{last}<"
=> "22>31<"

I should get "22#>31<", the # must come after each item excepted the last..
 
R

Raj Sahae

Josselin said:
I have an array myArray = ["22", "31", "56", "89", "47"]

I would like to produce a string like : "22#31#56#89>47<" where the
last item must be : >last_item<
Here you say that you want the second to last item to have no # after it,
I should get "22#>31<", the # must come after each item excepted the
last..

but here you say you want a # after it.
If you want no # sign, then Josselin's solution works.
If you want a # sign, just push that last item back on the array and
join it with #

myArray = ["22", "31", "56", "89", "47"]
myArray2 = ["22", "47"]
myArray3 = ["47"]

arrays = [myArray, myArray2, myArray3]

arrays.each{|array| puts array.push('>' + array.pop.to_s + '<').join('#')}
 
G

Gary Wright

I have an array myArray = ["22", "31", "56", "89", "47"]

I would like to produce a string like : "22#31#56#89>47<" where
the last item must be : >last_item<

case 1 item : ["22"] => ">22<"
case 2 items : ["22", "31"] => "22#>31<"
..
case n items : ["22", "31", "56", .........., "89", "47"] =>
"22#31#56#...........#89>47<"

I'm assuming you have a typo in that last case and want the
string to end with: "#89#>47<". It isn't clear how you would
want an empty list formatted but here is one possibility:

$ cat format.rb

def format(list)
list[0..-2].push(">#{list.last}<").join('#')
end

puts format([])
puts format(%w{22})
puts format(%w{22 31})
puts format(%w{22 31 56})

$ ruby format.rb
22#>31<
22#31#>56<




Gary Wright
 
J

Josselin

I have an array myArray = ["22", "31", "56", "89", "47"]

I would like to produce a string like : "22#31#56#89>47<" where
the last item must be : >last_item<

case 1 item : ["22"] => ">22<"
case 2 items : ["22", "31"] => "22#>31<"
..
case n items : ["22", "31", "56", .........., "89", "47"] =>
"22#31#56#...........#89>47<"

I'm assuming you have a typo in that last case and want the
string to end with: "#89#>47<".

YES .. sorry
It isn't clear how you would
want an empty list formatted but here is one possibility:

$ cat format.rb

def format(list)
list[0..-2].push(">#{list.last}<").join('#')
end

puts format([])
puts format(%w{22})
puts format(%w{22 31})
puts format(%w{22 31 56})

$ ruby format.rb
22#>31<
22#31#>56<

THAT's it......, very useful.. I put '#' and '>' '<' charcaters just to
make it simple.. but the objective is to insert html tags
to format correctly an output string...
 

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

Forum statistics

Threads
473,769
Messages
2,569,579
Members
45,053
Latest member
BrodieSola

Latest Threads

Top