Arrays 在用户名中添加后缀号以避免重复?

Arrays 在用户名中添加后缀号以避免重复?,arrays,ruby-on-rails,ruby,csv,Arrays,Ruby On Rails,Ruby,Csv,将后缀(数字)添加到username,但如果username已经在数组或文件中,则将后缀增加1,如果再次重复,则增加2,依此类推。。。 我已经使用count添加了后缀。但如果已经存在,我需要增加 firstname = [] lastname = [] firstchar = [] lastchar = [] username = [] rows = [] CSV.open("userdata.csv", "wb") do |csv| CSV.foreach("em

将后缀(数字)添加到username,但如果username已经在数组或文件中,则将后缀增加1,如果再次重复,则增加2,依此类推。。。 我已经使用count添加了后缀。但如果已经存在,我需要增加

firstname = []
lastname  = []
firstchar = []
lastchar  = []
username  = []
rows      = []

CSV.open("userdata.csv", "wb") do |csv|  
    CSV.foreach("employeedata.csv", headers: true) do |row|  
        rows << row
    end

    count = 1

    rows.each do |line|
        firstname = line[0]
        lastname = line[1]
        firstchar = line[0][0].downcase
        lastchar = line[0][-1]
        username = lastname + firstchar + lastchar + "#{count}"
        name = firstname + lastname
        password = SecureRandom.hex(5)
        csv << [firstname] +  [lastname]  + [username] + [password]        
    end
end
firstname=[]
lastname=[]
firstchar=[]
lastchar=[]
用户名=[]
行=[]
CSV.open(“userdata.CSV”、“wb”)do | CSV |
CSV.foreach(“employeedata.CSV”,标题:true)do | row |

行我会这样做

rows      = []

CSV.foreach("employeedata.csv", headers: true) do |row|  
    rows << row
end

user_count = {}

CSV.open("userdata.csv", "wb") do |csv|  
    rows.each do |line|
        firstname = line[0]
        lastname = line[1]
        firstchar = line[0][0].downcase
        lastchar = line[0][-1]

        username = lastname + firstchar + lastchar
        user_count[username] = user_count.fetch(username){ 0 } + 1
        username = username + user_count[username].to_s

        name = firstname + lastname
        password = SecureRandom.hex(5)

        csv << [firstname] +  [lastname]  + [username] + [password]        
    end
end
行=[]
CSV.foreach(“employeedata.CSV”,标题:true)do | row |

行我会这样做

rows      = []

CSV.foreach("employeedata.csv", headers: true) do |row|  
    rows << row
end

user_count = {}

CSV.open("userdata.csv", "wb") do |csv|  
    rows.each do |line|
        firstname = line[0]
        lastname = line[1]
        firstchar = line[0][0].downcase
        lastchar = line[0][-1]

        username = lastname + firstchar + lastchar
        user_count[username] = user_count.fetch(username){ 0 } + 1
        username = username + user_count[username].to_s

        name = firstname + lastname
        password = SecureRandom.hex(5)

        csv << [firstname] +  [lastname]  + [username] + [password]        
    end
end
行=[]
CSV.foreach(“employeedata.CSV”,标题:true)do | row |

行您需要修复代码块的格式。@robbpriestley我刚做了,请告诉我好了,那看起来好多了,谢谢你为什么是1。对firstname、lastname、firstchar、lastchar、username使用数组。2.(可选)您可以在userdata.csv块3之外读取employeedata.csv。使用哈希来保存username@twnaing:OP对
firstname
等使用数组是不正确的。虽然OP使用空数组不必要地初始化
firstname
是正确的,但该值会立即在循环中丢弃,并替换为
字符串
。实际上,程序的前6行应该完全删除。你需要修改代码块的格式。@robbpriestley我刚做了,请告诉我好的,谢谢你为什么是1。对firstname、lastname、firstchar、lastchar、username使用数组。2.(可选)您可以在userdata.csv块3之外读取employeedata.csv。使用哈希来保存username@twnaing:OP对
firstname
等使用数组是不正确的。虽然OP使用空数组不必要地初始化
firstname
是正确的,但该值会立即在循环中丢弃,并替换为
字符串
。实际上,程序的前6行应该完全删除。非常好@twnaing!只需在用户计数[username]之后添加.to以避免出现错误“`+':没有将整数隐式转换为字符串”。非常感谢@twnaing!只需在用户计数[username]之后添加.to以避免出现错误“`+':没有将整数隐式转换为字符串”。谢谢