Laden...

Nach Zeilenumbruch in RichTextBox suchen

Erstellt von LeoM vor 8 Jahren Letzter Beitrag vor 8 Jahren 3.370 Views
L
LeoM Themenstarter:in
12 Beiträge seit 2015
vor 8 Jahren
Nach Zeilenumbruch in RichTextBox suchen

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.

212 Beiträge seit 2008
vor 8 Jahren

Hallo,

vielleicht findest du hier eine Erklärung: Klick

Gruß
Christoph

L
LeoM Themenstarter:in
12 Beiträge seit 2015
vor 8 Jahren

hat leider nicht geholfen. Auch bei

int za = richTextBox1.Find("\\n"); 

bleibt der Wert von za bei -1.

1.696 Beiträge seit 2006
vor 8 Jahren

Was hältst du von

richTextBox1.Text.IndexOf(...);

Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.

**:::

3.170 Beiträge seit 2006
vor 8 Jahren

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

5.658 Beiträge seit 2006
vor 8 Jahren

Hi LeoM,

der Zeilenumbruch im RichTextFormat lautet übrigens "\line" und nicht "@\line".

Christian

Weeks of programming can save you hours of planning

L
LeoM Themenstarter:in
12 Beiträge seit 2015
vor 8 Jahren

@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().

5.658 Beiträge seit 2006
vor 8 Jahren

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

1.696 Beiträge seit 2006
vor 8 Jahren

@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?

Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.

**:::

S
145 Beiträge seit 2013
vor 8 Jahren

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