Cod sursa(job #1359471)

Utilizator adriana.eneEne Adriana adriana.ene Data 24 februarie 2015 22:50:28
Problema Convertor Scor 70
Compilator java Status done
Runda rosedu_cdl_2015 Marime 2.4 kb
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) throws IOException {
		Scanner scanner = new Scanner(new FileInputStream("convertor.in"));
		PrintWriter writer = new PrintWriter("convertor.out");
		String line = "", text = "", value = "";
		// variabila in care voi retine dimensiune vectorul rezultat 
		// dupa ce am facut split dupa caracterele "}" si "'"
		int lengthArray;
		// variabila folosita pentru a afisa cheile o singura data
		boolean key = false;
		while (scanner.hasNextLine()) {
			line = scanner.nextLine();
			// salvez intr-un string toate caracterele aflate intre acolade
			if (line.indexOf('}') > 0) {
				// am gasit acolada inchisa, parsez
				text += line;
				// retin numarul stringurile care au caractere aflate intre acolade
				int len = text.split("}").length;
				if (key == false) {
					// scot cheile
					lengthArray = text.split("}")[0].split(",").length;
					for (int j = 0; j < lengthArray; j++) {
						// cheile le iau o singura data
						String split = text.split("}")[0].split(",")[j];
						// afisez fara ghilimele si cu virgula
						writer.write(split.substring(split.indexOf("\"") + 1,
								split.indexOf("\"", split.indexOf("\"") + 1)) + ",");
					}
					writer.write("\n");
					key = true;
				}
				// scot valorile
				for (int i = 0; i < len; i++) {
					String split1 = text.split("}")[i];
					lengthArray = split1.split(",").length;
					for (int j = 0; j < lengthArray; j++) {
						// pot exista caractere care contin numai un element
						// si nu sunt nici chei, nici valori
						if (split1.split(",")[j].split(":")[0].contains("\"")) {
							// iau valoarea
							value = split1.split(",")[j].split(":")[1];
							// verific daca e string sau numar
							if (value.contains("\"")) {
								int index = value.indexOf("\"") + 1;
								writer.write(value.substring(index,
										value.indexOf("\"", index)) + ",");
							}
							// daca e numar elimin spatiile
							else
								writer.write(value.trim() + ",");
						}
					}
					// pentru ultimele valori nu mai pun caracterul "\n"
					if (i != text.split("}").length - 1)
						writer.write("\n");
				}
				text = "";
			}
			// altfel, pun in continuare la text
			else 
				text += line;
		}
		writer.close();
	}
}