Substring aus String - \n nicht beachten

  • Themenstarter Themenstarter chipper
  • Beginndatum Beginndatum
C

chipper

Gast
Ich möchte aus einem String die ersten x Zeichen heraussuchen, dabei sollen allerdings die "\n" nicht beachtet werden oder zumindest nicht mitgezählt werden.
Beispiel:
String input = "abcdef\nklkk";

herauskommen soll, in diesem fall mit den ersten 8 Zeichen:
"abcdefkl", auch "abcdef\nkl" wäre akzeptabel, wichtig ist, dass die ersten 8 nicht-\n Zeichen dabei sind.

Am einfachsten wäre es, vorher alle "\n" zu entfernen, was aber aufgrund meiner Situation nicht möglich ist, was kann ich noch tun?
 
Entweder selber bis 8 Zählen oder dir einen passenden Regex erstellen, wobei die erste Möglichkeit vermutlich am einfachsten ist.
 
Hatte mir das mit RegEx schon überlegt und jetzt, so glaube ich, eine Lösung gefunden:
Code:
([^\n]\n*){8}

Nun stehe ich aber vor dem Problem, wie ich das in Java ausschneide, bei Substring kann ich ja keinen RegEx angeben, suche so etwas wie preg_match() von PHP, das nach dem Regulären Ausdruck sucht und den ersten Fund speichert, das gibt es bestimmt oder?
 
Java:
String text="asdf\njklö1234";
		String ohneN=text.replace("\n", "");
		System.out.println(ohneN.substring(0, 8));
 
Geschafft (wenn ich nicht wieder neue Probleme finde 😉 )
Java:
String s  = "dea\nbcafafdd";
  int länge = 4;
  Pattern p = Pattern.compile("([^\n]\n*){" + länge +  "}");
  Matcher m = p.matcher(s);
  m.find();
  System.out.println( m.group().replaceAll("\n","") );

Oder habt ihr noch eine bessere / effizientere Lösung?
 
Warum schmeißt du die '\n' am Ende dann doch wieder raus? Dann kannst du die auch als erstes entfernen und danach substring aufrufen.
 
Schwer zu erklären.
Ich habe einen sehr großen Text in einer String Variablen (mit \n), dieser Text wird bei jedem Schleifendurchlauf um eine Zeile gekürzt, deshalb benötige ich die \n.
Aus diesem großen Text benötige ich die ersten x Zeichen, die ich herausschneide, um diese dann weiterzuverarbeiten (für die Weiterverarbeitung müssen die \n gelöscht sein, aber halt nur im SubString, im gesamten benötige ich die ja noch zum Kürzen).

Der hier gepostete Code ist nur ein Ausschnitt vom "Projekt"
 
Wie kommt ihr darauf dass mein code die \n aus dem Text entfernt? Hab das ganze sogar in die extra Variable ohneN gespeichert.

Java:
String ohneN=text.replace("\n", "");
Speichert text ohne die \n in ohneN. Der String text sieht noch immer so aus wie vorher.
 
Ja, da kommts auf die interpretation dann an, besonders wenn man so konkrete Fragestellungen hat 🙂

Hab mich auf das hier bezogen:
herauskommen soll, in diesem fall mit den ersten 8 Zeichen:
"abcdefkl", auch "abcdef\nkl" wäre akzeptabel, wichtig ist, dass die ersten 8 nicht-\n Zeichen dabei sind.
Ich hab sowieso den Verdacht dass der TO ein bisschen um 3 Ecken denkt bei seinem Algorithmus.
 
Wie gesagt, ist schwer zu erklären ohne Zusammenhang, bin mit der Lösung erst einmal zufrieden.

Danke
 

Zurück
Oben