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.
Huseyin P. (Guest)
on 2006-03-02 18: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
Kent S. (Guest)
on 2006-03-02 18: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
unknown (Guest)
on 2006-03-02 18: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
Srinivas J. (Guest)
on 2006-03-02 18:22
(Received via mailing list)
Please try these.

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

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

Best regards,

JS
unknown (Guest)
on 2006-03-02 18: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
Gregor K. (Guest)
on 2006-03-02 18: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:
bluemonk (Guest)
on 2006-03-02 23: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...
Huseyin P. (Guest)
on 2006-03-03 01:36
Kent S. 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
Huseyin P. (Guest)
on 2006-03-03 01:45
Kent S. 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 :(
Huseyin P. (Guest)
on 2006-03-03 02: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
Huseyin P. (Guest)
on 2006-03-03 02:07
Srinivas J. 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]
Huseyin P. (Guest)
on 2006-03-03 02: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("],[")
  }
Timothy H. (Guest)
on 2006-03-03 02: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>
Mike S. (Guest)
on 2006-03-03 03:09
(Received via mailing list)
On 2-Mar-06, at 7:28 PM, Tim H. 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 S. <removed_email_address@domain.invalid>
http://www.stok.ca/~mike/

The "`Stok' disclaimers" apply.
Dae San H. (Guest)
on 2006-03-03 03: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
unknown (Guest)
on 2006-03-03 07: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
Huseyin P. (Guest)
on 2006-03-03 12: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.