eine Zahl aus einem String filtern
-
Hallo zusammen,
Ich suche eine Methode die eine Zahl aus einem String filtert.
String in der Form: "Das Fass hat 1000L"Ergebnis soll sein: 1000
Gibt es sowas überhaupt in fertiger Form?
oder muss ich mir da doch was selber schreiben?Also im Internet suche ich schon länger, habe aber nichts passendes gefunden.
Gruß
Cospieler
-
Diese Aufgabe kann man mit Regex lösen.
Hier ein Beispiel:
using namespace System; using namespace System::Text::RegularExpressions; int main() { auto input = gcnew String("Das Fass hat 1000L"); auto match = Regex::Match(input, R"((\d+))"); if (match->Success) { auto number = Int32::Parse(match->Value); Console::WriteLine("Die Zahl ist {0}", number); } return 0; }
-
Danke theta
von Regex habe ich noch nichts gelesen,
aber auf Parse.Werde mir bei nächster Gelegenheit, den Code genauer anschauen.
Danke nochmal
-
Ich habe mir mal dein Code angesehen ist auch soweit logisch.
Habe es versucht in Visual Studio 2010 C++ zu laufen zu bringen.
Leider ohne Erfolg.
Alle Versuche sind bei mir gescheitert.
Herr Google konnte mir auch noch nicht weiter helfen.
Suche aber immer noch.#include "stdafx.h" using namespace System; using namespace System::Text::RegularExpressions; int main(array<System::String ^> ^args) { auto input = gcnew String("Das Fass hat 1000L"); auto match = Regex::Match(input, R"((\d+))"); if (match->Success) { auto number = Int32::Parse(match->Value); Console::WriteLine("Die Zahl ist {0}", number); } return 0; }
Fehlerbericht:
1>------ Erstellen gestartet: Projekt: Beispiel-Zahl-in-String-filtern-CLR-Konso, Konfiguration: Debug Win32 ------
1> Beispiel-Zahl-in-String-filtern-CLR-Konso.cpp
1>Beispiel-Zahl-in-String-filtern-CLR-Konso.cpp(11): warning C4129: 'd': Nicht erkannte Folge von Escapesequenz
1>Beispiel-Zahl-in-String-filtern-CLR-Konso.cpp(11): error C2065: 'R': nichtdeklarierter Bezeichner
1>Beispiel-Zahl-in-String-filtern-CLR-Konso.cpp(11): error C2143: Syntaxfehler: Es fehlt ')' vor 'Zeichenfolge'
1>Beispiel-Zahl-in-String-filtern-CLR-Konso.cpp(11): fatal error C1903: Weiterverarbeitung nach vorherigem Fehler nicht möglich; Kompilierung wird abgebrochen.
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
-
Die R-Syntax ist erst ab C++11 vorhanden.
Probiere daherauto match = Regex::Match(input, "\\d+");
-
Danke Th69
Das war die Lösung.
Hier nochmal der geänderte Code:
#include "stdafx.h" using namespace System; using namespace System::Text::RegularExpressions; int main(array<System::String ^> ^args) { auto input = gcnew String("Das Fass hat 1000L"); auto match = Regex::Match(input, "\\d+"); if (match->Success) { auto number = Int32::Parse(match->Value); Console::WriteLine("Die Zahl ist {0}", number); } Console::WriteLine(""); Console::WriteLine("Eine Taste betätigen um zu beenden."); Console::ReadLine(); return 0; }