String nach vielen bestimmten Zahlen vergleichen



  • Hallo,

    ich hoffe es ist ok, wenn ich schon wieder einen Thread starte - aber das ist nunmal ein neues Thema.

    ------------

    Ich habe einen String:

    String^ test = "0"
    

    Nun prüfe ich ob einer meiner benötigten Zahlen vorhanden ist:

    if(test == "0")//tue was
    

    Soweit alles klar, doch mit nur einer Zahl macht das natürlich keinen Sinn.
    Ich brauche einmal eine Abfrage von 0-9 & dann 10-99.
    Das habe ich bislang so gemacht:

    if(test == "0"||
    			test == "1"||
    			test == "2"||
    			..
    			test == "8"||
    			test == "9")//tue was
    		 else if(test == "10"||
    			test == "11"||
    			...
    			test == "99")//tue was
    

    Das bläht den Code ziemlich auf. Gibts es eine elegantere Lösung?

    Danke! 🙂



  • Hi

    Hier könnte dir string->Contains() helfen.

    String ^teststring = "das ist ein teststring";
         if (teststring->Contains("ein"))
            label1->Text = "Text im String enthalten.";
         else
            label1->Text = "Text nicht im String enthalten.";
    

    Hmm, ich sehe grade das ich etwas besser hätte lesen sollen.
    Das wird dir bei deinem Problem auch nicht weiterhelfen. 🙄



  • Konvertiere den String in einen int:

    int main()
    {
    array<String^>^ strings = gcnew array<String^> { "34", "103", "0", "109", "99", "a"};
    	for each(String^ s in strings)
    	{
    		try
    		{
    			int i = Int32::Parse(s);
    
    			Console::Write("{0}: ", i);
    			if(i >= 0 && i < 100)
    				Console::WriteLine(true);
    			else
    				Console::WriteLine(false);
    		}
    		catch(System::FormatException^)
    		{
    			Console::WriteLine("{0} lässt sich nicht in int konvertieren.", s);
    		}
    	}
    }
    


  • Hallo,

    erstmal Danke für die Antworten.

    @Michael E.
    Selbst hier muss man jede gesuchte Zahl eintragen, da kann ist fast bei dem oben genannten bleiben.
    Ich dachte eher an: Von ... bis.



  • Hast du meinen Code überhaupt getestet?

    Das von ... bis ist durch einen int viel einfacher zu lösen als bei Strings, da es sich um ein Zahlenintervall handelt. Zeile 11 findet heraus, ob die Zahl in meinem String im Intervall liegt oder außerhalb.



  • Hallo,

    nein ich habe es noch nicht getestet.
    Kann es sein, dass das Ergebnis in einer Konsole erscheint?

    Oder täuscht der Name von z.B. Console::WriteLine nur?

    Laut MSDN ist es für Konsolen, ich suche aber eine Lösung für eine Windowsanwendung. Korrigier mich wenn ich falsch liege. 😃



  • Ja, ich geb das Ergebnis in der Konsole aus. Ich hätte auch genauso gut "//tue was" schreiben können, wie du es getan hast. Das ändert aber nichts an der Lösung des Problems...

    Ob Konsole oder GUI ist nur eine Frage der Präsentation gegenüber dem User. Deine Frage hat aber nichts mit der Präsentation zu tun, deshalb ist es egal, ob man dir eine Lösung für die Konsole oder für ne GUI gibt.



  • Hallo,

    ja du hast natürlich recht. Ich wollte nur auf Nummer sicher gehen 🙂

    Also danke dafür. 👍



  • hi, warum nicht

    if (i>=0 && i<=9)
        Console::WriteLine("Zahl {0}",i);
    if (i>=10 && i<=99)
        Console::WriteLine("Zahl größer als ich");
    

    vorher mit try/catch die Fehler/int abfangen

    mfg


Anmelden zum Antworten