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
Le samedi 24 février 2007 19:00, Josselin a écrit :
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,
make a special treatment for the last element.
On Feb 24, 10:59 am, Josselin [email protected] wrote:
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<”
On 2007-02-24 19:51:16 +0100, “Phrogz” [email protected] said:
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…
Josselin wrote:
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(’#’)}
On 2007-02-24 21:50:18 +0100, Gary W. [email protected] said:
…
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
puts format(%w{22})
puts format(%w{22 31})
puts format(%w{22 31 56})
$ ruby format.rb
<
22<
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…
On Feb 24, 2007, at 1:00 PM, Josselin wrote:
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<
22#>31<
22#31#>56<
Gary W.