2016-04-25 11 views
0

Ich habe eine WinFormApp mit 2 txtboxes (LongName und ShortName) mit einem Button.Trimmen Textfeld Text nach 20 Zeichen und Leerzeichen, wenn Leerzeichen enthält

Wenn txt in der LongName txtbox eingegeben wird, möchte ich die Taste drücken, um alle txt in LongName txtbox zu den ersten 20 Zeichen Eingabe zu verkürzen und alle Leerzeichen in 'der txtbox zu entfernen und dann die Ergebnisse in der ShortName txtbox anzuzeigen. Es fällt mir wirklich schwer, das zu korrigieren. Ich habe versucht, eine Reihe von Möglichkeiten zu versuchen, aber letztlich scheint es nicht richtig zu machen. Es folgt ein Beispielcode:

private void btnGetSN_Click(object sender, EventArgs e) 
{ 
    Regex space = new Regex(@" "); 
    MatchCollection spacematch = space.Matches(txtLongName.Text); 
    if (txtLongName.Text.Length > 20) 
    { 
     string toTrim = txtLongName.Text; 

     toTrim = toTrim.Trim(); 

     txtShortName.Text = ("'" + toTrim.ToString() + "'"); 
    } 
    if (spacematch.Count > 0) 
    { 
     txtLongName.Text.Replace(" ", ""); 
    } 
}//closes method 

Ich habe es gelungen, die txtbox nur 20 Zeichen in den Eigenschaften zu begrenzen, aber ich möchte ein Setup Wenn die Variable mehr Anpassung ermöglichen.

Bin ich auf dem richtigen Weg?

Keine Fehler im Code, aber beim Ausführen der Schaltfläche passiert nichts. Jede Hilfe wird geschätzt.

+0

Sie keine Leerzeichen entfernt werden, bevor Sie auf Kurznamen zugeordnet – techspider

+0

Dies wird in der Entwurfsansicht zu finden, wie ich sagte, ich auf 20 festgelegt haben, aber ich würde eher Habe die if-Anweisung eine Aktion ausführen wenn über 20 (trimmen) und nicht auf –

+0

@techspider limitieren kannst du ein Beispiel geben? –

Antwort

2

Sieht aus wie Sie anders

private void button1_Click(object sender, EventArgs e) 
    { 
     var shortName = txtLongName.Text.Trim().Replace(" ", ""); 

     var maxLength = (shortName.Length > 20) ? 20 : shortName.Length; 

     if(txtLongName.Text.Trim().Length > 0) 
      txtShortName.Text = shortName.Substring(0, maxLength); 
    } 
+0

das ist genau das, was ich brauchte. Haben Sie eine Quelle, die diese Methode gegen meine erklären kann? Ich würde gerne genau erfahren, warum das gegen meine funktioniert und wann ich eine Methode wie diese gegen meine verwenden sollte. (Aus den Fehlern zu lernen, macht mich zu einem besseren Programmierer). –

+1

erhalten Sie einen temporären shortName, indem Sie alle Zeichen entfernen, die Sie nicht benötigen; zweite erhält die Länge der aktuellen Zeichenfolge; Wenn es mehr als 20 Zeichen ist, nehmen Sie 20 in die Länge; Jetzt erhalten Sie einen Teilstring von 0 bis zu der Länge, die im vorherigen Schritt identifiziert wurde; Wenn Sie debuggen, sollten Sie in der Lage sein zu verstehen – techspider

4

string.Replace() schreiben müssen nicht aktualisiert die Zeichenfolge selbst, sondern gibt einen neuen String, der geändert wird.

private void btnGetSN_Click(object sender, EventArgs e) 
{ 
    // remove space from txtLongName 
    txtLongName.Text = txtLongName.Text.Replace(" ", string.Empty); 

    // take only the first 20characters from txtLongName 
    txtShortName.Text = txtLongName.Text.Substring(0, Math.Min(txtLongName.Text.Length, 20)); 
} 

BEARBEITEN: Vorheriger Code entfernt Speicherplatz von txtLongName. Wenn das nicht beabsichtigt ist, verwenden Sie stattdessen:

private void btnGetSN_Click(object sender, EventArgs e) 
{ 
    // remove space from txtLongName 
    var name = txtLongName.Text.Replace(" ", string.Empty); 

    // take only the first 20characters from txtLongName 
    txtShortName.Text = name.Substring(0, Math.Min(name.Length, 20)); 
} 
Verwandte Themen