1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Datei parsen

Discussion in 'Programmieren' started by martin0, Mar 13, 2008.

Thread Status:
Not open for further replies.
  1. martin0

    martin0 ROM

    Hallo Leute,

    ich sitze gerade an einer Sache, wo ich noch nicht so recht weiter weiß. Vielleicht kann mir ja dabei jemand helfen. Und zwar habe ich eine Textdatei mit folgenden Aufbau:

    vorher: datei.txt

    wert1=Auto
    wert2=Motorrad
    wert3=<tag>wert1</tag>
    wert4=Schiff
    wert5=<tag>wert2</tag>

    Ich möchte nun die ganze Datei einlesen und die Werte, die zwischen den Tags sich befinden, hier wert1 und wert2 durch die entsprechend rechte Seite von wert1 und wert2 ersetzen. Der Tag soll dabei wegfallen.

    So soll es nachher aussehen.

    nachher: datei.txt

    wert1=Auto
    wert2=Motorrad
    wert3=Auto
    wert4=Schiff
    wert5=Motorrad

    Ich weiß nicht genau wie der Code dazu sein müsste, einlesen der Datei klappt schon, nur das parsen noch nicht. Hat jemand eine Idee? Wäre echt super. ;)

    Mein Code bis jetzt

    Code:
    public static void main(String[] args) throws IOException {
          // TODO Automatisch erstellter Methoden-Stub
    
          String s[] = new String[20];
          BufferedReader in = new BufferedReader(new FileReader("datei.txt"));
          String zeile  = null;
          String[] str;            
          
          int j = 1;
          while ((zeile = in.readLine()) != null) {
                      
             str = zeile.split("=");
             s[j] = str[1];
             System.out.println("s[j] " + s[j]);         
             
                    // suche das entsprechende Tag und entferne die Tags
    
             if (s[j].matches(".*<tag>.*")){
                int i1 = s[j].indexOf("<tag>")+5;
                int i2 = s[j].indexOf("</tag>");
                String s2 = s[j].substring(i1, i2);
                      
                
                
             }
             
             String s1 = s[j];
             
             
                            FileWriter fw = new FileWriter("datei2.txt", true);
                            BufferedWriter w= new BufferedWriter(fw);
                            w.write(str[0]+"="+s1);
                            w.newLine();
                            w.close();
              j++;
                 }
         }
    }
    Gruss

    Martin
     
  2. RealC++

    RealC++ Kbyte

    Mach es so:
    Code:
    namespace DeleteTags
    {
        class Program
        {
            static void Main(string[] args)
            {
                DeleteTagsProc("datei.txt");
            }
    
            static void DeleteTagsProc(string Filename)
            {
                try
                {
                    //Read unformated file
                    string Input;
    
                    using (System.IO.StreamReader File = new System.IO.StreamReader(Filename))
                        Input = File.ReadToEnd();
    
                    //Format file and write to file
                    string Buffer="";
    
                    for (int Count = 0; Count < Input.Length; Count++)
                    {
                        if (Input[Count] != '<')
                        {
                            Buffer += Input[Count];
                        }
                        else
                        {
                            do
                            {
                                Count++;
                            }
                            while (Input[Count] != '>');
                        }
                    }
    
                    using (System.IO.StreamWriter File = new System.IO.StreamWriter(Filename))
                        File.Write(Buffer);
                }
                catch (System.Exception e)
                {
                    System.Console.WriteLine("ERROR: " + e.Message);
                    System.Threading.Thread.Sleep(2000);
                }
            }
        }
    }
     
Thread Status:
Not open for further replies.

Share This Page