arrays - 为用户名添加后缀号避免重复?
问题描述
将后缀(数字)添加到用户名,但如果用户名已经在数组或文件中,则将后缀增加 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
解决方案
我会做这样的事情。
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
- 读取userdat.csv文件块外的employeedata.csv
- 使用
user_count
哈希来保存用户名的出现次数(lastname + firstchar + lastchar) - 使用Hash fetch方法设置出现次数
推荐阅读
- regex - 正则表达式 - 如果有任何重复的小写字母,则匹配
- python - 如何序列化我的模型以获得所需的输出
- mysql - 锁 FOR UPDATE 是否允许 MySQL 中另一个连接的简单 SELECT 语句
- r - R - contour.default(x, y, z) 中的错误:预期增加“x”和“y”值
- python - 为什么我的浮点转换为二进制数不适用于某些十进制值?
- asp.net - reportProgress Angular 不适用于 Web API AspNet?
- directed-acyclic-graphs - 如何设置依赖于动态流的动态流
- python - PyQt5中的所有样式是什么
- python - 您可以从原始数据框中取消堆叠计算列吗?
- node.js - 混淆使用 Node.js Passport 模块身份验证