Monday 15 February 2010

How can I create an array of duplicate case-insensitive strings from another array in Ruby? -



How can I create an array of duplicate case-insensitive strings from another array in Ruby? -

i have array of strings. i'm wanting alter name of these duplicate strings append numerical value create them unique so...

original array

a, a, a, b, c, d, d

corrected array

a, a1, a2, b, c, d, d1

i've gotten close next code; however, if strings different case construction aren't considered duplicates code snippet. them considered duplicates, yet not alter case in results array.

duplicate_counter = 1 duplicates = array.new duplicates = file_columns.select{ |e| file_columns.count(e) > 1 } # duplicate column names duplicates.each{ |x| file_columns.delete(x) } duplicates.sort! duplicates.each_with_index |d, i| if > 0 if d == duplicates[i-1] d = d.strip + duplicate_count.to_s duplicate_count += 1 else duplicate_count = 1 end end # add together column names, appended numerical counts create them unique file_columns.push(d) end

you on thinking considerably. i'm sure there improve ways well, gets job done.

a = ['a', 'a', 'a', 'b', 'c', 'd', 'd'] letters = hash.new(-1) a.map |letter| l = letter.downcase letters[l] += 1 if (letters[l] > 0) "#{letter}#{letters[l]}" else "#{letter}" end end

ruby-on-rails ruby arrays string duplicates

No comments:

Post a Comment