Kód: Vybrať všetko
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Stringy {
public static final String vstupnySubor = "c:/vstup.txt";
public static final String vystupnySubor = "c:/vystup.txt";
public static int pocetSlov(String veta) {
int i = -1, pocet = 0;
veta = veta.trim(); // vymaze zaciatocne a koncove medzery
do {
i = veta.indexOf(" ", i + 1);
if (i >= 0) {
pocet++;
}
} while (i >= 0);
return pocet + 1;
}
public static String vymazDiakritiku(String s) {
// pismena s diakritikou
String[] pd = { "ď", "ľ", "š", "č", "ť", "ž", "ý", "á", "í", "é", "ú",
"ä", "ň", "ĺ", "ŕ", "ô", "ó", "Ď", "Ľ", "Š", "Č", "Ť", "Ž",
"Ý", "Á", "Í", "É", "Ú", "Ň", "Ó", "Ŕ", "Ĺ" };
// pismena bez diakritky zodpovedajuce pismenam v poli pd
String[] p = { "d", "l", "s", "c", "t", "z", "y", "a", "i", "e", "u",
"a", "n", "l", "r", "o", "o", "D", "L", "S", "C", "T", "Z",
"Y", "A", "I", "E", "U", "N", "O", "R", "L" };
String vysledok = s;
// prejdeme celym polom pd a nahradime vsetky vyskyty pismen
// s diakritikou pismenami bez diakritiky
for (int i = 0; i < pd.length; i++) {
vysledok = vysledok.replaceAll(pd[i], p[i]);
}
return vysledok;
}
public static void main(String[] arg) {
try {
// nacitaj vstupny subor
System.out.println("Citam zo suboru: "+ vstupnySubor);
String[] riadky = citajZoSuboru(vstupnySubor);
int pocetSlov = 0;
System.out.println("Pocet riadkov: " + riadky.length);
// zmaz v nich diakritiku
for (int i = 0; i < riadky.length; i++) {
// pocitame si pocet zmenenych slov pre neskorsi vypis
pocetSlov += pocetSlov(riadky[i]);
// zmenime dany riadok
riadky[i] = vymazDiakritiku(riadky[i]);
}
System.out.println("Zmenenych slov: " + pocetSlov);
// zapis ich do vystupneho suboru
System.out.println("Zapis do suboru: "+ vystupnySubor);
zapisDoSuboru(vystupnySubor, riadky);
} catch (IOException e) {
System.out.println("Chyba zapisu na disk: " + e.getMessage());
}
}
public static String[] citajZoSuboru(String menoSuboru) throws IOException {
FileReader r = new FileReader(menoSuboru);
BufferedReader br = new BufferedReader(r);
// spocitame pocet neprazdnych riadkov v subore
// aby sme vedeli rozmer pola ktore mame vratit
int pocetRiadkov = 0;
String riadok = "";
// ked sa riadok == null tak sme narazili na koniec suboru
while (riadok != null) {
riadok = br.readLine();
if (riadok != null) {
pocetRiadkov++;
}
}
int i = 0;
br.close();
// musime zavriet pristup k suboru
// a znova ho nainicializovat aby sme sa dostali
// na zaciatok suboru
r = new FileReader(menoSuboru);
br = new BufferedReader(r);
// alokujeme pole velkosti poctu neprazdnych riadkov v subore
String[] vysledok = new String[pocetRiadkov];
riadok = "";
// nacitame riadky
while (riadok != null) {
riadok = br.readLine();
if (riadok != null) {
vysledok[i] = riadok;
i++;
}
}
// zavrieme subor
br.close();
// vratime dane pole
return vysledok;
}
public static void zapisDoSuboru(String menoSuboru, String[] riadky)
throws IOException {
FileWriter w = new FileWriter(menoSuboru);
BufferedWriter bw = new BufferedWriter(w);
// zapiseme vsetky riadky
for (int i = 0; i < riadky.length; i++) {
bw.write(riadky[i] + "\n");
}
// zavretie suboru je potrebne aby sa data zapisali na disk
bw.flush();
bw.close();
}
}