Is there a different way to replace these brackets using Ruby regex? -
Is there a different way to replace these brackets using Ruby regex? -
i have string contains 2-d array.
b= "[[1, 2, 3], [4, 5, 6]]" c = b.gsub(/(\[\[)/,"[").gsub(/(\]\])/,"]")
the above how decide flatten to:
"[1, 2, 3], [4, 5, 6]"
is there way replace leftmost , rightmost brackets without doing double gsub
call? i'm doing deeper dive regular expressions , see different alternatives.
sometimes, string may in right format comma delimited 1-d arrays.
the gsub
method accepts hash, , matches regular look replaced using keys/values in hash, so:
b = "[[1, 2, 3], [4, 5, 6]]" c = b.gsub(/\[\[|\]\]/, '[[' => '[', ']]' => ']')
that may little jumbled, , in practice i'd define list of swaps on different line. looking 1 gsub, in more intuitive way.
another alternative take advantage of fact gsub
accepts block:
c = b.gsub(/\[\[|\]\]/){|matched_value| matched_value.first}
here match double opening/closing square brackets, , take first letter of matches. can clean regex:
c = b.gsub(/\[{2}|\]{2}/){|matched_value| matched_value.first}
this more succinct way specify want match 2 opening brackets, or 2 closing brackets. can refine block:
c = b.gsub(/\[{2}|\]{2}/, &:first)
here we're using ruby shorthand. if need phone call simple method on object passed block, can utilize &:
notation this. think i've gotten short , sweetness can. happy coding!
ruby regex
Comments
Post a Comment