2016-05-26 12 views
0

Ich möchte automatisch folgendes zu formatieren:Automatische Einzug Text mit Klammern

main[ 
    key1=value1 
    key2=value2 
    structure1=type1[ 
    key3=value3 
    key4=value4 
] 
    structure4=type2[ 
    key5=value5 
    key6=value6 
] 
    list=[elementType[ 
    key7=value7 
    key8=value8 
], elementType[ 
    key9=value9 
    key10=value10 
]] 
] 

Meine Erwartung so etwas wie dieses:

main[ 
    key1=value1 
    key2=value2 
    structure1=type1[ 
     key3=value3 
     key4=value4 
    ] 
    structure4=type2[ 
     key5=value5 
     key6=value6 
    ] 
    list=[ 
     elementType[ 
      key7=value7 
      key8=value8 
     ], 
     elementType[ 
      key9=value9 
      key10=value10 
     ] 
    ] 
] 

Die ursprüngliche Quelle ist wirklich riesig. Ich möchte dies einmal tun, daher brauche ich keine generische Lösung.

Weiß jemand über einen solchen automatischen Formatierer? Vielen Dank!

Antwort

0

Ich habe ein Java-Programm für diesen erstellt:

import java.io.*; 
import java.util.*; 

public class Formatter { 
    public static void main(String args[]) throws Exception { 
     if (args.length != 1) { 
      System.out.println("Usage: java Formatter filename"); 
     } else { 
      List<String> lines = readFile(args[0]); 
      int indent = 0; 
      for (String line: lines) { 
       String lineExtended = "x" + line + "x"; 
       indent -= (lineExtended.split("\\]").length - 1); 
       for (int i = 0; i < indent; i++) { 
        System.out.print("\t"); 
       } 
       System.out.println(line.trim()); 
       indent += (lineExtended.split("\\[").length - 1); 
      } 
     } 
    } 

    private static List<String> readFile(String filename) throws Exception { 
     List<String> records = new ArrayList<String>(); 
     BufferedReader reader = new BufferedReader(new FileReader(filename)); 
     String line; 
     while ((line = reader.readLine()) != null) { 
      records.add(line); 
     } 
     reader.close(); 
     return records; 
    } 
} 

Aber ich bin wirklich neugierig, ob es eine bessere Lösung gibt.

0

There ist eine gute Erweiterung. Drücken Sie STRG + ALT + I Kombination, um beliebigen Code zu formatieren.

enter image description here

Vor

enter image description here

Nach

enter image description here

+0

Es klingt gut, aber es entfernt nur die führenden Leerzeichen mich an. –

+0

@ CsabaFaragó es ist sehr seltsam ... –

+0

Ein paar Schritte voraus: 1. Es ist notwendig, die Datei mit Json-Erweiterung zu speichern, damit es funktioniert, mit Ihrem Beispiel. 2. Es funktioniert nicht mit [], nur mit {}. 3. Nach dem Ersetzen der Klammern [] mit {} ist das Ergebnis immer noch seltsam, wenn ich mein Beispiel benutze. Zumindest entfernt es nicht nur die führenden Leerzeichen, aber das Ergebnis ist nicht das, was ich erwarte. –