2017-09-28 1 views
-5

Ich habe eine Aufgabe, wo Benutzer Zahlen eingeben, und wenn Sie die Taste drücken, gibt es Ihnen die Summe von ihnen, aber wenn Sie etwas Text eingeben, erscheint die Popup-Box mit Ja und Nein, wenn Sie Ja drücken, wird der gesamte Text gelöscht (nicht die Zahlen). Also meine Frage ist, wie kann ich nur Buchstaben löschen, aber keine Zahlen? Ich bin nicht sehr gut darin, also werde ich verrückt versuchen, davon zu denken!C# Windows Forms Application nur Text löschen

private void button1_MouseClick(object sender, MouseEventArgs e) 
    { 
     int sum = 0; 
     if(IsAllLetters(textBox1.Text) == true) 
     { 
for (int i = 0; i < textBox1.Text.Length; i++) 
     { 
      sum += (int)char.GetNumericValue(textBox1.Text[i]); 
     } 
     label2.Text = "Summa:    " + sum; 
     } 
     else 
     { 
      DialogResult dialogResult = MessageBox.Show("Delete all letters??", "Alert", MessageBoxButtons.YesNo); 
      if (dialogResult == DialogResult.Yes) 
      { 
       //do something else 

      } 
      else if (dialogResult == DialogResult.No) 
      { 
       //do something else 
      } 
     } 

    } 
     public static bool IsAllLetters (string s) 
    { 
     foreach (char c in s) 
     { 
      if (Char.IsLetter(c)) 
       return false; 
     } 
     return true; 
    } 
    } 
+2

Mögliches Duplikat [Wie Sie die Buchstaben aus einer Zeichenkette entfernen?] (Https://stackoverflow.com/questions/3624332/how-do-you-remove-all-the-alphabetic- Zeichen aus einer Zeichenkette) – gunr2171

+2

Es ist nicht klar, was Sie fragen oder was Sie als Antwort erwarten. Wenn Sie ein bestimmtes Problem haben, fügen Sie bitte ein [mcve] hinzu. Bitte lies auch [eine gute Frage]. Stellen Sie sicher, dass Ihre Fragen spezifisch und nicht zu weit gefasst sind. – Igor

+1

Es hilft sehr viel zu zeigen, was Sie bereits haben, es erlaubt uns, eine spezifischere Antwort zu geben. –

Antwort

0

Wie andere erwähnt haben, ist dies nicht sehr klar. Obwohl ich denke, dass ich Ihr Problem verstehe, kann ich es nicht mit dem Kontext in Verbindung bringen, ohne ein Beispiel dafür zu geben, was Sie bereits versucht haben.

Wie auch immer, Sie können Regex dafür verwenden.

using System.Text.RegularExpressions; 

Dann vorausgesetzt, Sie die Eingabe als Variable gespeichert haben, sagen wir mal „userinput“

Convert.ToInt32(Regex.Replace(userInput, "[^0-9]+", string.Empty)); 

Dies wird eine ganze Zahl der extrahierten Zahlen zurück. Ich werde meine Antwort aktualisieren, sobald Sie Ihre Frage aktualisiert haben.

BEARBEITEN: Buchstäblich sobald ich das gepostet habe, hast du es aktualisiert. Der obige Code funktioniert immer noch, wenn Sie textBox1.Text einer Variablen zuweisen.

private void button1_MouseClick(object sender, MouseEventArgs e) 
    { 
     string userInput = textBox1.Text; 
     int sum = 0; 
     if (IsAllLetters(userInput) == true) 
     { 
      for (int i = 0; i < userInput.Length; i++) 
      { 
       sum += (int)char.GetNumericValue(userInput[i]); 
      } 
      label2.Text = "Summa:    " + sum; 
     } 
     else 
     { 
      DialogResult dialogResult = MessageBox.Show("Delete all letters??", "Alert", MessageBoxButtons.YesNo); 
      if (dialogResult == DialogResult.Yes) 
      { 
       userInput = Regex.Replace(userInput, "[^0-9]+", string.Empty); 
       for (int i = 0; i < userInput.Length; i++) 
       { 
        sum += (int)char.GetNumericValue(userInput[i]); 
       } 
       label2.Text = "Summa:    " + sum; 
      } 
      else if (dialogResult == DialogResult.No) 
      { 
       //do something else 
      } 
     } 

    } 
    public static bool IsAllLetters(string s) 
    { 
     foreach (char c in s) 
     { 
      if (Char.IsLetter(c)) 
       return false; 
     } 
     return true; 
    } 
0

Dieses Beispiel überprüft, ob das Zeichen eine Zahl ist. Vielleicht ist es nützlich für Sie.

using System; 
using System.Text; 

class MainClass 
{ 
    public static void Main() 
    { 
     string inputText = "John12Fitzgerald34Kennedy"; 
     StringBuilder returnText = new StringBuilder(); 

     foreach (char singleChar in inputText) 
     { 
      if ((int)singleChar >= 0x30 && (int)singleChar <= 0x39) 
       returnText.Append(singleChar); 
     } 

     Console.WriteLine(returnText); 
     Console.ReadLine(); 
    } 
} 
Verwandte Themen