Pagini recente » Cod sursa (job #2239129) | Cod sursa (job #2820286) | Cod sursa (job #1307902) | Cod sursa (job #2987747) | Cod sursa (job #1354014)
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
/**
* Pentru cheile si valorile de la inceputul fisierului pana la prima acolada inchisa } folosesc o metoda de conversie(liniile 25-51),
* dupa care pentru restul valorilor folosesc o alta metoda(liniile 59-98).
* @author Stefan Florescu
*/
public class Convertor
{
public void converteste() throws FileNotFoundException, IOException
{
BufferedReader buffReader = new BufferedReader(new FileReader("convertor.in"));
PrintWriter pw = new PrintWriter("convertor.out");
String line = "";
while(!line.contains("}"))
line = line.concat(buffReader.readLine());
int index = line.lastIndexOf("}");
String endLine = line.substring(index); // endLine va fi sirul de la prima aparitie a { pana la primul new line
line = line.substring(0,index); // line va fi tot sirul de la inceputul fisierului pana la prima aparitie a acoladei }
String lineSplit[] = line.split(",|:|\"");
int count = 0; // contorul in functie de care voi stii care sunt cheile si care sunt valorile
String secondLine = "";
for(int i = 1; i < lineSplit.length; i++) // pentru cheile si valoriile ce vor fi scrise pe primele 2 randuri in fisierul de iesire
if(lineSplit[i].length() > 0 && !lineSplit[i].equals(" "))
{
count++;
if(count %2 != 1) // e valoare
{ // concateneaz valoarea intr un string, si adaug string ul la sfarsitul forului in fisierul de iesire
if(lineSplit[i].charAt(0) == ' ')
lineSplit[i] = lineSplit[i].replaceFirst(" ", "");
if(lineSplit[i].length() > 0 )
secondLine += lineSplit[i] + ",";
}
else // e cheie
{
if(Character.isLetterOrDigit(lineSplit[i].charAt(0)))
pw.write(lineSplit[i] + ",");
}
}
String NLS = System.getProperty("line.separator");
pw.write(NLS);
pw.write(secondLine);
pw.write(NLS);
line = endLine;
while((line = line.concat(buffReader.readLine())).equals(endLine) == false) // pentru restul cheilor si valorilor din fisier
{
if(line.contains("]"))
break;
endLine = line;
}
lineSplit = line.split(":|,");
for(int i = 0; i < lineSplit.length; i++)
{
if(lineSplit[i].length() > 0 && lineSplit[i].charAt(0) == ' ')
lineSplit[i] = lineSplit[i].replaceFirst(" ", "");
if(lineSplit[i].length() > 0)
{
int a = lineSplit[i].indexOf("\"");
int b = lineSplit[i].lastIndexOf("\"");
if(a != -1 && b != -1)
lineSplit[i] = lineSplit[i].substring(a+1, b);
}
}
// }
int countWords = 0; // acest contor este folosit pentru a stii cand trebuie sarit in fisierul de iesire la linie noua
for(int i = 0; i < lineSplit.length; i++)
if(i%2 == 0) // daca e valoare(nici o legatura cu manelele)
{
String sp[] = lineSplit[i].split("}");
for(int j = 0; j < sp.length; j++)
if(sp[j].length() > 0 && !sp[j].equals("]"))
{
countWords++;
if(sp[j].length() > 0 && sp[j].charAt(0) == ' ')
sp[j] = sp[j].replaceFirst(" ", "");
if(Character.isLetterOrDigit(sp[j].charAt(0)))
pw.write(sp[j] + ",");
if(countWords == count/2)
{
pw.write(NLS);
countWords = 0;
}
}
}
buffReader.close();
pw.close();
}
public static void main(String[] args) throws IOException
{
Convertor conv = new Convertor();
conv.converteste();
}
}