Svish Skrevet 23. mai 2007 Del 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? Lenke til kommentar
Peter Skrevet 23. mai 2007 Del Skrevet 23. mai 2007 Les inn filen i en lang streng erstatt \n\n med \n skriv strengen til filen igjen. Lenke til kommentar
Svish Skrevet 23. mai 2007 Forfatter Del Skrevet 23. mai 2007 men dersom du har en \n\n\n\n vil den da lage den om til \n\n eller \n? Lenke til kommentar
Peter Skrevet 23. mai 2007 Del 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) Lenke til kommentar
mar Skrevet 23. mai 2007 Del 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 Lenke til kommentar
gunnard Skrevet 23. mai 2007 Del 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); } } } } Lenke til kommentar
Harkonnen Skrevet 30. mai 2007 Del 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"); * Lenke til kommentar
blackbrrd Skrevet 30. mai 2007 Del 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 Lenke til kommentar
gunnard Skrevet 30. mai 2007 Del 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.. Lenke til kommentar
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å