[C#] Wyciąganie zmiennej z tekstu

0

Jak wyciągnąć zmienną z tekstu w C#??? Chodzi o to, że np. jest komunikat "Podaj liczbę" a ktoś wpisze niechcący np. "12abc" i chodzi o to, żeby program zapisał do zmiennej liczba (typ float lub int dajmy na to) tylko 12. Tak to by się prezentowało początkowo..

float liczba;
printf("Podaj liczbę:\n") ;
Tu użytkownik podaje "12abc" i program ma z tego zrobić samo "12" a na koniec przypisać tę liczbę do zmiennej liczba.

2

Idziesz po linii najmniejszego oporu. Wysil się trochę sam. Ludzie nie mają czasu się zajmować takimi bzdurami .
Może lepiej zajmij się graniem zamiast pisaniem programów.

0
Zimny Krawiec napisał(a):

Idziesz po linii najmniejszego oporu. Wysil się trochę sam. Ludzie nie mają czasu się zajmować takimi bzdurami .

Próbowałem i nie za bardzo wiem jak się za to wziąć. Zmienną do tekstu to wiem jak wstawić, ale jak na odwrót??

0

Wyrażenia regularne można użyć. Z ciągu znaków znaleźć te które pasują do wzorca liczb i potem użyć Parse. Najlepiej pokaż kod, który już masz

0

Zapoznaj się na początek z klasą String , Char
https://docs.microsoft.com/pl-pl/dotnet/api/system.string?view=netcore-3.1
https://docs.microsoft.com/pl-pl/dotnet/api/system.char?view=netcore-3.1
jak je przerobisz to daj znać będziemy dalej działać

0
            Console.WriteLine("Podaj liczbę:");
            string input = Console.ReadLine();
            string liczba = "";

            foreach (char c  in input)
            {

                if (Char.IsDigit(c))
                {
                    liczba = liczba + c;
                }
            }

            Console.WriteLine(liczba);

Teraz musisz tylko sparsować sobie do int czy innego typu ;-)

0
Kristof napisał(a):
            Console.WriteLine("Podaj liczbę:");
            string input = Console.ReadLine();
            string liczba = "";

            foreach (char c  in input)
            {

                if (Char.IsDigit(c))
                {
                    liczba = liczba + c;
                }
            }

            Console.WriteLine(liczba);

Teraz musisz tylko sparsować sobie do int czy innego typu ;-)

Dziękuję.

1
  1. W C# nie ma printf, można dobrać się do tej metody używając biblioteki pozwalającej na użycie metod z C ale nie sądzę, że tego was uczą więc pewnie to inny język niż C#. Ewentualnie używasz biblioteki kogoś kto w C# napisał metodę printf używającej Console.Writeline

  2. Prosisz na początku apki użytkownika żeby podał liczbę a chcesz sprawdzić, które znaki wśród inputu to liczba ? Wydaje mi się, że jeśli chcesz liczbę to liczba powinna być wprowadzona a ty powinieneś jako developer dodać jakąś prostą walidację np. czy da się bezpośrednio sparsować input na float, jeśli nie to błąd i ponownie prosisz o input, jeśli tak to lecisz dalej z programem. Takie podejście jest lepsze niż na siłe szukanie floata w inpucie, bo co zrobisz, jeśli ktoś poda taki input "abc12.12def21.21gha09.09xyz". Którą liczbę wybierzesz ? Jedną z opcji do walidacji możesz jak najbardziej wybrać z komentarzy wyżej. Chociażby używając zmiennaKtorejPotrzebuje = float.Parse(inputString, CultureInfo.InvariantCulture);
    Dla pewności możesz wtedy dla takiej metody napisać test jednostkowy. Pisząc program nie możesz zawsze zakładać, że wewnątrz każdej metody sam musisz sprawdzać co ktoś miał na myśli podając input, walidacje w metodach są jak najbardziej okej i bardzo często potrzebne.

  3. ....No chyba, że to jakieś zadanie domowe i masz napisane, że jako wymaganie jest wyciąganie oczekiwanej zmiennej z inputu który przyjdzie...

0

Regex

1 użytkowników online, w tym zalogowanych: 0, gości: 1