Svish Skrevet 23. mai 2007 Skrevet 23. mai 2007 Hva er kjappeste java-kode for å gå igjennom en fil og gjøre så det ikke er mer enn to linjeskift etter hverandre?
Peter Skrevet 23. mai 2007 Skrevet 23. mai 2007 Les inn filen i en lang streng erstatt \n\n med \n skriv strengen til filen igjen.
Svish Skrevet 23. mai 2007 Forfatter Skrevet 23. mai 2007 men dersom du har en \n\n\n\n vil den da lage den om til \n\n eller \n?
Peter Skrevet 23. mai 2007 Skrevet 23. mai 2007 while( finnes \n\n i koden ) erstatt \n\n med \n Da vil du ende med kun enkle linjeskift. Eksempel på iterasjon der de eksisterer tre linjeskift etterhverandre: 1: \n\n\n 2: \n\n 3: \n Som du ser vil koden loope to ganger (tredje gangen så finner den ikke dobbelt linjeskift)
mar Skrevet 23. mai 2007 Skrevet 23. mai 2007 while( finnes \n\n i koden )erstatt \n\n med \n Da vil du ende med kun enkle linjeskift. Eksempel på iterasjon der de eksisterer tre linjeskift etterhverandre: 1: \n\n\n 2: \n\n 3: \n Som du ser vil koden loope to ganger (tredje gangen så finner den ikke dobbelt linjeskift) 8679413[/snapback] Er jo kjedelig å lese gjennom filen ørten ganger, kan jo ta litt tid med store filer. while (finnes flere tegn i teksten) { tegn = (les neste tegn fra filen) if (tegn=linjeskift og forrige_tegn=linjeskift) { hopp over 'tegn' else skriv tegn til fil. Sett forrige_tegn=tegn
gunnard Skrevet 23. mai 2007 Skrevet 23. mai 2007 import java.io.*; class FormaterFil { public static void main(String[] args) { if(args.length == 0) { System.out.println("Skriv inn filnavnet som første argument."); System.exit(1); } else { try { BufferedReader fil = new BufferedReader(new FileReader(args[0])); String tekst = null; String linje; boolean ekstralinjeskift = false; while((linje = fil.readLine()) != null) { if(!linje.equals("")) { if(tekst != null) { if(ekstralinjeskift) tekst += "\r\n"; tekst += "\r\n" + linje; } else tekst = linje; } else ekstralinjeskift = true; } fil.close(); PrintWriter utfil = new PrintWriter(new FileWriter(args[0] + ".ny")); utfil.print(tekst); utfil.close(); } catch(IOException e) { System.out.println("Feil under innlesning"); System.exit(1); } } } }
Harkonnen Skrevet 30. mai 2007 Skrevet 30. mai 2007 Man bruker da ikke "\r\n" direkte. Siden dette ikke er slik linjeskift blir spesifisert på alle platformer. *hinte til System.getProperty("line.separator"); *
blackbrrd Skrevet 30. mai 2007 Skrevet 30. mai 2007 Filer kan inneholde \r\n eller \n uavhengig hvilken plattform du befinner deg på når du kjører java programmet, mao så burde man kanskje kjøre noe auto-detection e.l. for å finne ut om man skal bruke \r\n eller \n
gunnard Skrevet 30. mai 2007 Skrevet 30. mai 2007 Kunne like gjerne brukt bare \n, men dette er jo egentlig ikke noe problem da de aller fleste tekstbehandlingsverktøyene klarer å tolke \r\n og \n likt, altså som "bare" linjeskift (unntatt Notisblokk o.l.), det samme gjøre Javas IO-bibliotek..
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå