2016-11-21 5 views
0

Ich habe ein mehrzeiliges Textfeld mit Text ähnlich:Stripping Linien von mehrzeiligen Textbox

Tester Testman 
None 
None 
18 Test Court 
Upper Test 
QLD 4000 

Ich versuche, alle Zeilen zu entfernen, die das Wort None, ich habe versucht, die folgenden:

private void TextBoxShippingLabel_TextChanged(object sender, TextChangedEventArgs e) 
{ 
    TextBoxShippingLabel.Text = TextBoxShippingLabel.Text.Replace("None", null); 
} 

jedoch stattdessen die Linien zu entfernen, das nur sie leer lässt, so sieht es aus, dann wie folgt aus:

Tester Testman 


18 Test Court 
Upper Test 
QLD 4000 

Wie kann ich meinen Code ändern, um die Zeilen zu entfernen, die nur das Wort "None" enthalten? Meine gewünschte Ausgabe wäre:

Tester Testman 
18 Test Court 
Upper Test 
QLD 4000 
+0

Nur aus Neugier, warum ist ein mehrzeiliges Textfeld Label mit dem Namen? –

+0

@ EmrahSüngü Hoppla! Weil ich die Benennungsstruktur beeilte, danke für den Alarm - jetzt korrigierend. – Codingo

+1

Ich schreibe jetzt einen Ausschnitt für Sie. Hoffe, ich kann es rechtzeitig schaffen –

Antwort

3

Hier ist ein einfaches Snippet hinzuzufügen, um den Job zu erledigen:

private void UnwantedNoneRemover(TextBox textBox) { 
    var lines = textBox.Lines; 
    var updatedLines = new List<string>(); 
    foreach (var line in lines) { 
     if (line != "None") { updatedLines.Add(line); } 
    } 
    textBox.Lines = updatedLines.ToArray(); 
} 
+0

enthält Dieses wird auch nicht übereinstimmen "" None "' erscheint am Ende der Zeichenfolge, für sich selbst in der letzten Zeile. –

+0

Ja sicher, das habe ich auch bemerkt –

+0

@BenVoigt, ich habe die Lösung für eine besser lesbare und "korrektere" aktualisiert –

2
TextBoxShippingLabel.Text = string.Join(System.Environment.NewLine,TextBoxShippingLabel.Text.Split(new Char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries).Where(x=>x!="None")); 
1

jene "None" Linien Suposing Räume neben dem Zeilenumbruch enthalten, könnte man diese verwenden:

Regex regExp = new Regex(@"None[\s]*" + System.Environment.NewLine); 

TextBoxShippingLabel.Text = regExp.Replace(TextBoxShippingLabel.Text,""); 

Der reguläre Ausdruck Keine [\ s] * Sucht nach dem Wort None gefolgt von null oder mehr Leerzeichen. Durch Verketten der System.Environment.NewLine wird der Zeilenumbruch entfernt.

Vergessen Sie nicht, die Referenz :)

using System.Text.RegularExpressions; 
+0

Beachten Sie, dass dies die letzte Zeile nicht entfernen wird, wenn es (nur) das Wort '" None "' –

Verwandte Themen