Gå til innhold

Fra rent dokument til adresse bok


Anbefalte innlegg

Hei

 

Jeg har en liste med navn, 2 telefon.nr, og epost. Dem vil jeg veldig gjerne ha inn i adressebok.

 

Jeg har sett det er mulig å importere filer, men jeg klarer ikke lage filene riktig, så den blir ikke vertifisert, og skal jeg redigere mye på hver fil, så er det nesten like lett å skrive inn en for en. Det er snakk om 200 nummer, så har ikke veldig lyst til å skrive inn allt...

 

Takker for svar

 

Mvh Einar

Lenke til kommentar
Videoannonse
Annonse

Ruby :love:

 

Her er programmet (kjøres: program.rb fil):

lines = File.read(ARGV[0]).split("\n")

contacts = []

(lines.length / 4).times do |x|
 r = (contacts[x] = {})
 r[:surname], r[:name] = *lines.shift.split(", ")
 r[:tel1] = lines.shift
 r[:tel2] = lines.shift
 r[:mail] = lines.shift
end

contacts.each do |contact|
 result = "BEGIN:VCARD\n"
 result << "VERSION:3.0\n"
 result << "TEL:#{contact[:tel1]}\n"
 result << "TEL:#{contact[:tel2]}\n"
 result << "EMAIL:#{contact[:mail]}\n"
 result << "FN:#{contact[:name]} #{contact[:surname]}\n"
 result << "N:#{contact[:surname]};#{contact[:name]};;;\n"
 result << "END:VCARD"
 File.open(contact[:tel1] + '.vcf', "w") do |f|
   f << result
 end
end

 

Lenke til kommentar

Hei

 

Takk for scriptet!

 

Jeg fikk ikke dette her helt til å fungere. Skal jeg lage en fil, f.eks: liste.txt så kjøre i Terminal:

program.rb liste.txt ? (har ikke prøvd)

 

Så prøvde jeg stappe allt inn i contacts, men da ble det bare bug :p

Lenke til kommentar

Ett problem er hvis det er tomt område, altså hvis det ikke er noe epost f.eks..

 

Kunne du gjort slik at hver gang det var linjeskjift, altså blank område, så ble det ny person...

 

Noe slikt

 

Etternavn, Fornavn

12345678

33445566

 

Etternavn2, Fornavn2

12345678

33445566

[email protected]

Lenke til kommentar
lines = File.read(ARGV[0]).split("\n")

contacts = []

(lines.length / 4).times do |x|
r = (contacts[x] = {})
r[:surname], r[:name] = *lines.shift.split(", ")
r[:tel1] = lines.shift
r[:tel2] = lines.shift
r[:mail] = lines.shift
end

contacts.each do |contact|
result = "BEGIN:VCARD\n"
result << "VERSION:3.0\n"
result << "TEL:#{contact[:tel1]}\n" unless contact[:tel1].strip.empty?
result << "TEL:#{contact[:tel2]}\n" unless contact[:tel2].strip.empty?
result << "EMAIL:#{contact[:mail]}\n" unless contact[:mail].strip.empty?
result << "FN:#{contact[:name]} #{contact[:surname]}\n"
result << "N:#{contact[:surname]};#{contact[:name]};;;\n"
result << "END:VCARD"
File.open(contact[:tel1] + '.vcf', "w") do |f|
  f << result
end
end

Lenke til kommentar

Nå da:

File.open(ARGV[0], "r") do |f|
 file = f.read
 @lines = file.split(["\n", "\r", "\r\n"].detect {|x| file.include? x})
end

contacts = []

(@lines.length / 4).times do |x|
r = (contacts[x] = {})
r[:surname], r[:name] = *@lines.shift.split(", ")
r[:tel1] = @lines.shift
r[:tel2] = @lines.shift
r[:mail] = @lines.shift
end

contacts.each do |contact|
result = "BEGIN:VCARD\n"
result << "VERSION:3.0\n"
result << "TEL:#{contact[:tel1]}\n" unless contact[:tel1].strip.empty?
result << "TEL:#{contact[:tel2]}\n" unless contact[:tel2].strip.empty?
result << "EMAIL:#{contact[:mail]}\n" unless contact[:mail].strip.empty?
result << "FN:#{contact[:name]} #{contact[:surname]}\n"
result << "N:#{contact[:surname]};#{contact[:name]};;;\n"
result << "END:VCARD"
File.open(contact[:tel1] + '.vcf', "w") do |f|
 f << result
end
end

 

EDIT: Liten kodeforbedring

Endret av Judofyr
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...