Textvergleich bei Textdatei

TomSto

Mitglied
Moin!

Ich lese eine Textdatei ein und vergleiche Zeilenweise per .equals()
Ich suche aber eigentlich nur nach einem Teil der Zeile. Bis jetzt ging es auch, wenn ich immer die ganze Zeile verglichen habe. Leider kommen immer mehr extra Varianten hinzu. Nur ein kleiner Teil bleibt gleich. Wie kann ich den Vergleich nur auf einen Teil der Zeile anpassen?

Hier mein Code:

Code:
String Str_test0 = "    Packets: Sent = 10, Received = 10, Lost = 0 (0% loss),";
String Str_test1 = "    Packets: Sent = 10, Received = 9, Lost = 1 (10% loss),";

try 
	{	
		RandomAccessFile in = new RandomAccessFile(file, "r");
		String line;
		while ((line = in.readLine())!= null)
		{	
		 if (line.equals(Str_test0))Int_test0++;
                                            .....

Diese Zeile vergleiche ich:


Packets: Sent = 10, Received = 9, Lost = 1 (10% loss),

Hier ändert sich leider die Anzahl der gesendeten Pakete (nicht immer 10....)
deshalb wäre es Praktisch, einfach nur nach dem (10% loss), etc. zu suchen.

Danke für eure Hilfe!
 
Bastel dir einen regulären Ausdruck und suche mit diesem. Thomas kann dir sicher aus dem Stehgreif ein Beispiel geben. Damit ist es dann kein Problem mehr nach dem loss zu suchen. Paket ist java.util.regex

als Pattern könntest du z.B. ([0-9]+% loss) nehmen.

andere Möglichkeit: du Suchst mittels String.indexOf(String test) und dem test-String "loss" ob das Wort loss in dem String vorhanden ist. Wenn ja kannst du ja einen entsprechenden Substring extrahieren (Funktion substring) indem du die Indizes relativ zum Auftreten von loss berechnest. Falls die Zahl vor den Prozent ein oder 2 stellig sein kann ist da natürlich eine Abfrage von nöten.

Code:
      if (int index=zeile.indexOf("loss")!=-1) {
          String substr=zeile.substring(index-5);
          System.out.println(substr);
      } else {
         System.out.println("String not included");
      }

nur als Denkansatz.
 
Zuletzt bearbeitet:
Zurück