Forum: Ruby gsub problem

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
8aafedcf44e49905528db92dce034879?d=identicon&s=25 Huseyin Polat (hpolat)
on 2006-03-02 17:13
I have spend over 4 hours for this.. here is the question masters, very
simple.
str=String.new
str="[1,2][2,1][3,1][4,1]"

now I want to print this string as
[1,2],[2,1],[3,1],[4,1]
in other word I want to add comma between those ][ and make them look
like ],[
I tried gsub with hundred different possibilities but no luck,

second problem
if my the same str has
[1,2][2,1][3,1][4,1],
and I want to get rid of last comma from the list, I tried chop chomp
and all that but it gets ri of alot more than comma at the end. how can
I get rid of last comma from the list? from [1,2][2,1][3,1][4,1], to
[1,2][2,1][3,1][4,1]


any help will be appreciated.
thank you
3ccecc71b9fb0a3d7f00a0bef6f0a63a?d=identicon&s=25 Kent Sibilev (Guest)
on 2006-03-02 17:20
(Received via mailing list)
$ irb
irb(main):001:0> str="[1,2][2,1][3,1][4,1],"
=> "[1,2][2,1][3,1][4,1],"
irb(main):002:0> str.gsub(/\]\[/, '],[').sub(/,$/, '')
=> "[1,2],[2,1],[3,1],[4,1]"

--
Kent
Cb48ca5059faf7409a5ab3745a964696?d=identicon&s=25 unknown (Guest)
on 2006-03-02 17:20
(Received via mailing list)
On Fri, 3 Mar 2006, huseyin polat wrote:

> I have spend over 4 hours for this.. here is the question masters, very
> simple.
> str=String.new
> str="[1,2][2,1][3,1][4,1]"
>
> now I want to print this string as
> [1,2],[2,1],[3,1],[4,1]
> in other word I want to add comma between those ][ and make them look
> like ],[
> I tried gsub with hundred different possibilities but no luck,

harp:~ > ruby -e'  puts("[1,2][2,1][3,1][4,1]".gsub(%r/\]\[/, "],["))  '
[1,2],[2,1],[3,1],[4,1]


> second problem
> if my the same str has
> [1,2][2,1][3,1][4,1],
> and I want to get rid of last comma from the list, I tried chop chomp
> and all that but it gets ri of alot more than comma at the end. how can
> I get rid of last comma from the list? from [1,2][2,1][3,1][4,1], to
> [1,2][2,1][3,1][4,1]

harp:~ > ruby -e'
puts("[1,2][2,1][3,1][4,1],,,".gsub(%r/,+$/,"").gsub(%r/\]\[/, "],["))
'
[1,2],[2,1],[3,1],[4,1]

regards.

-a
1e7d80da752f10d223599a3600aed1d2?d=identicon&s=25 Srinivas Jonnalagadda (Guest)
on 2006-03-02 17:22
(Received via mailing list)
Please try these.

1. str.gsub(/\]\[/, '],[')

2. str.sub(/,$/, '')

Best regards,

JS
0b6c03456c7606f5b95629228eb7a85a?d=identicon&s=25 unknown (Guest)
on 2006-03-02 17:25
(Received via mailing list)
irb(main):035:0*  str="[1,2][2,1][3,1][4,1]"
=> "[1,2][2,1][3,1][4,1]"
irb(main):036:0> str.gsub '][', '],['
=> "[1,2],[2,1],[3,1],[4,1]"


irb(main):037:0> str += ','
=> "[1,2][2,1][3,1][4,1],"
irb(main):038:0> str.chomp ','
=> "[1,2][2,1][3,1][4,1]"

Jim
97187d7e48d59c178c7af8eaaaa3857c?d=identicon&s=25 Gregor Kopp (Guest)
on 2006-03-02 17:28
(Received via mailing list)
first problem:

puts "[1,2][2,1][3,1][4,1]".gsub(/\]\[/, '],[')

second problem: headache, im a noob on regexp

huseyin polat schrieb:
775783016c3e721f5f102bd7ef229805?d=identicon&s=25 bluemonk (Guest)
on 2006-03-02 22:41
huseyin polat wrote:

> now I want to print this string as
> [1,2],[2,1],[3,1],[4,1]
> in other word I want to add comma between those ][ and make them look
> like ],[
> I tried gsub with hundred different possibilities but no luck,

no need of regexps nor gsub:

str.split("][").join("],[") #=> "[1,2],[2,1],[3,1],[4,1]"

Ciao!
Marco

--
This way, to star trek...
8aafedcf44e49905528db92dce034879?d=identicon&s=25 Huseyin Polat (hpolat)
on 2006-03-03 00:36
Kent Sibilev wrote:
> $ irb
> irb(main):001:0> str="[1,2][2,1][3,1][4,1],"
> => "[1,2][2,1][3,1][4,1],"
> irb(main):002:0> str.gsub(/\]\[/, '],[').sub(/,$/, '')
> => "[1,2],[2,1],[3,1],[4,1]"
>
> --
> Kent

Kent thank you very much,But I did that and I got
[12][2,1][3,1][4,1] it got rid of last comma but also got rid of the
first comma between 1 and 2 and print them out like 12
any clue?
thank you
8aafedcf44e49905528db92dce034879?d=identicon&s=25 Huseyin Polat (hpolat)
on 2006-03-03 00:45
Kent Sibilev wrote:
> $ irb
> irb(main):001:0> str="[1,2][2,1][3,1][4,1],"
> => "[1,2][2,1][3,1][4,1],"
> irb(main):002:0> str.gsub(/\]\[/, '],[').sub(/,$/, '')
> => "[1,2],[2,1],[3,1],[4,1]"
>
> --
> Kent
Kent
ignore my first message please, yeah I have tried that but program still
prints out as:
[12][21][31][41]

no commas :(
8aafedcf44e49905528db92dce034879?d=identicon&s=25 Huseyin Polat (hpolat)
on 2006-03-03 01:01
unknown wrote:
> On Fri, 3 Mar 2006, huseyin polat wrote:
>
>> I have spend over 4 hours for this.. here is the question masters, very
>> simple.
>> str=String.new
>> str="[1,2][2,1][3,1][4,1]"
>>
>> now I want to print this string as
>> [1,2],[2,1],[3,1],[4,1]
>> in other word I want to add comma between those ][ and make them look
>> like ],[
>> I tried gsub with hundred different possibilities but no luck,
>
> harp:~ > ruby -e'  puts("[1,2][2,1][3,1][4,1]".gsub(%r/\]\[/, "],["))  '
> [1,2],[2,1],[3,1],[4,1]
>
>
>> second problem
>> if my the same str has
>> [1,2][2,1][3,1][4,1],
>> and I want to get rid of last comma from the list, I tried chop chomp
>> and all that but it gets ri of alot more than comma at the end. how can
>> I get rid of last comma from the list? from [1,2][2,1][3,1][4,1], to
>> [1,2][2,1][3,1][4,1]
>
> harp:~ > ruby -e'
> puts("[1,2][2,1][3,1][4,1],,,".gsub(%r/,+$/,"").gsub(%r/\]\[/, "],["))
> '
> [1,2],[2,1],[3,1],[4,1]
>
> regards.
>
> -a

thank you, however your first solution didn't make any difference and
the second got rid of all the commas. thank you anyway.
I have tried your second comments as
str.gsub(%r/,+$/,"").gsub(%r/\]\[/, "],[")
I don't know why.
thank you for trying
8aafedcf44e49905528db92dce034879?d=identicon&s=25 Huseyin Polat (hpolat)
on 2006-03-03 01:07
Srinivas Jonnalagadda wrote:
> Please try these.
>
> 1. str.gsub(/\]\[/, '],[')
>
> 2. str.sub(/,$/, '')
>
> Best regards,
>
> JS

thank you JS, however it didn'r change anything.
I am still getting output as
[1,2][2,1][3,1][4,1]
8aafedcf44e49905528db92dce034879?d=identicon&s=25 Huseyin Polat (hpolat)
on 2006-03-03 01:17
bluemonk wrote:
> huseyin polat wrote:
>
>> now I want to print this string as
>> [1,2],[2,1],[3,1],[4,1]
>> in other word I want to add comma between those ][ and make them look
>> like ],[
>> I tried gsub with hundred different possibilities but no luck,
>
> no need of regexps nor gsub:
>
> str.split("][").join("],[") #=> "[1,2],[2,1],[3,1],[4,1]"
>
> Ciao!
> Marco
>
> --
> This way, to star trek...

thank for post, but didn't change anything. maybe I should post my
entire program.
anybody wants to post their email to take a look at the program ?
one more thing, I get the string from a value [1,2][2,1][3,1][4,1] that
is originally created by push an array and then copied into my hash

bighash.sort.each{|key,value|
   value.each{ |value|
    str=String.new
    value=value.to_s
    str=value
  print str.split("][").join("],[")
  }
37a3c73ffbf864e4b28f7f2384ee12ce?d=identicon&s=25 Timothy Hunter (tim-hunter)
on 2006-03-03 01:30
(Received via mailing list)
huseyin polat wrote:
>     str=value
>   print str.split("][").join("],[")
>   }
>

Here's the output I get when I try Marco's solution. It looks right to
me.

iptc$ irb
irb(main):001:0> str="[1,2][2,1][3,1][4,1]"
=> "[1,2][2,1][3,1][4,1]"
irb(main):002:0> puts str.split("][").join("],[")
[1,2],[2,1],[3,1],[4,1]
=> nil
irb(main):003:0>
2ffac40f8a985a2b2749244b8a1c4161?d=identicon&s=25 Mike Stok (Guest)
on 2006-03-03 02:09
(Received via mailing list)
On 2-Mar-06, at 7:28 PM, Tim Hunter wrote:

>>     value=value.to_s
> irb(main):002:0> puts str.split("][").join("],[")
> [1,2],[2,1],[3,1],[4,1]
> => nil
> irb(main):003:0>
>
>

irb(main):001:0> "[1,2][2,1][3,1][4,1]".gsub(/\]\[/, '],[')
=> "[1,2],[2,1],[3,1],[4,1]"

--

Mike Stok <mike@stok.ca>
http://www.stok.ca/~mike/

The "`Stok' disclaimers" apply.
921432719b51a266a06878ff4128a7b1?d=identicon&s=25 Dae San Hwang (Guest)
on 2006-03-03 02:15
(Received via mailing list)
(first problem)

Other people's solution should work, but you don't really need to use
regex for this one.

try this:

str = "[1,2][2,1][3,1][4,1]"
str.gsub!('][', '],[')

(second problem)

str = "[1, 2][2, 1][3, 1][4, 1],"
str.gsub!(/,$/, '')

cheers,
daesan
0b6c03456c7606f5b95629228eb7a85a?d=identicon&s=25 unknown (Guest)
on 2006-03-03 06:10
(Received via mailing list)
Several of the solutions posted should work.  Time for a sanity check:
Are your sure that the _input_ is what you think it is?

Jim
8aafedcf44e49905528db92dce034879?d=identicon&s=25 Huseyin Polat (hpolat)
on 2006-03-03 11:12
Dear Friends, thank you very much you all Jim, daesan, Mike, Timothy,
Marco,  Gregor, Srinivas, Kent and Unknown guests.
all of you guys' solution was correct and here what I did wrong in
previous section of my code.
          bighash[key]= bighash[key].push(arrtemp)
and this was putting into my hash some random numbers and at the end
when I try to print it out whole value, it was printing fine, like
[12][42][32] but when I try to print value[0] it was printing random
number and this wasn't easy to catch since I was printing all the values
with bracets..
as soon as I have added bighash[key] = Array.new() initialization,
          bighash[key] = Array.new()
          bighash[key]= bighash[key].push(arrtemp)
all the solutions you guys posted worked out.
sorry for the headache and thank you for the support, this forum is
perfect, I will spread all my friends who are taking search engine class
with me.
thank you and have a nice day.
This topic is locked and can not be replied to.