Wie suche ich nach CR/LF im Text einer RichTextBox?
Mein Code:
int za = richTextBox1.Find("\n");
Als Parameter für die Find-Methode habe ich es versucht mit:
System.Environment.NewLine, \u2028, @\line, \r\n, #13#10 und dem obigen \n. Der Wert für za ist immer -1.
Gefüllt habe ich die Box aber mit
richTextBox1.Text += "Die erste Zeile.\r\n";
richTextBox1.Text += "Die zweite Zeile.\r\n";
richTextBox1.Text += "Die dritte Zeile.\r\n";
Merkwürdig.
hat leider nicht geholfen. Auch bei
int za = richTextBox1.Find("\\n");
bleibt der Wert von za bei -1.
Was hältst du von
richTextBox1.Text.IndexOf(...);
**:::
Hallo,
schau mal in RichTextBox.Find-Methode (String)
Da steht unter Hinweise im gelb hinterlegten Kasten:
Die Find-Methoden, die einen string als Parameter annehmen, können keinen Text finden, der sich über mehrere Textzeilen in der RichTextBox erstreckt. Der Rückgabewert eines solchen Suchvorgangs ist -1.
Dann ist es nicht verwunderlich, dass Du kein Ergebnis bekommst, wenn Du ausgerechnet nach dem Zeilenumbruch suchst...
Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
Hi LeoM,
der Zeilenumbruch im RichTextFormat lautet übrigens "\line" und nicht "@\line".
Christian
Weeks of programming can save you hours of planning
@MrSparkle: bitte teste einmal selbst, wie der Compiler auf richTextBox1.Find("\line"); reagiert.
@MarsStein: was schlägst du als Alternative zur Find-Methode vor? Gibt es eine byteweise Suche?
@vbProgger: IndexOf() ergibt dasselbe wie Find().
Man kann sich aber auch anstellen... Hier ein paar Links, die dir weiterhelfen könnten: [Hinweis] Syntaxfehler selbst lösen (Compilerfehlermeldungen) und [FAQ] Was bedeutet das @ (=at) vor String-Literalen? Und: Wissenswertes zu Escape-Sequenzen.
Ansonsten solltest du die Zeilenumbrüche wohl eher in der RichTextBox.Rtf-Eigenschaft suchen, dort wird auch das Markup durchsucht.
Bitte beachte unbedingt [Hinweis] Wie poste ich richtig?, Punkt 1.1 und 4.2. Daß du dir erstmal das Richtext-Format anschaust und herausfindest, wie ein Zeilenumbruch codiert wird, ist doch nicht zuviel verlangt, oder?
Christian
Weeks of programming can save you hours of planning
@vbProgger: IndexOf() ergibt dasselbe wie Find().
Wegen deiner Behauptung, habe grad getestet und es liefert mir genau die Position des 1. \n. Wie hast du es geschafft, dass du kein Ergebnis bekommst? Oder hast du mein Tipp einfach nur so abgefertigt?
**:::
Vielleicht liefert dir die Eigenschaft Lines auch schon das was du genau benötigst:
https://msdn.microsoft.com/de-de/library/system.windows.forms.textboxbase.lines%28v=vs.110%29.aspx