Odwołanie String (newbie)

Odpowiedz Nowy wątek
2018-11-16 17:36
0

Jestem świeżakiem jeśli chodzi o programowanie...
I nie mam pojęcia jak to wykonać, a mianowicie będę sprawdzał po kolei imię, nazwisko itd.
Ma być to na tej samej zasadzie sprawdzane, dlatego stwierdziłem, że fajnie by było napisać tylko raz kod i potem się do tego odwoływać a ta by zwracała już uporządkowaną wartość.

Napisałem coś takiego:
screenshot-20181116173555.png

Lecz zdaje sobie sprawę, że nie zwraca to do imie tylko jako "zmienna", jak to zrobić by return zwracal wartość do tej zmiennej imie?

sprawdzanie na zasadzie pozytywnej (akceptujemy litery języka polskiego i minus) jest lepsze niż negatywne (odrzucamy TYLKO cyfry) - AnyKtokolwiek 2018-11-16 19:14

Pozostało 580 znaków

2018-11-16 18:43
1
imie= sprawdz_string(Console.ReadLine());

Pozostało 580 znaków

2018-11-16 18:48
0

Ooo! O to mi chodziło... :D Dzięki wielkie! :)

Pozostało 580 znaków

2018-11-16 19:43
0

sprawdzanie na zasadzie pozytywnej (akceptujemy litery języka polskiego i minus) jest lepsze niż negatywne (odrzucamy TYLKO cyfry) - AnyKtokolwiek 28 minut temu

Też racja, chciałem tak zrobić według ASCII, ale nie wiem czemu mi to nie dziala ^^ ktoś coś?

screenshot-20181116194256.png

edytowany 1x, ostatnio: Zirex312, 2018-11-16 19:48

Pozostało 580 znaków

2018-11-16 20:21
1

Tu masz wersje akceptującą tylko litery i myślniki:

private static string sprawdz_string(string v) 
{  return v.Aggregate("", (x, y) => char.IsLetter(y) || y=='-'  ? x + y : x); }
Pokaż pozostałe 2 komentarze
Skoro Tobie wyszło a jeżeli się pomyliłem? :) - WeiXiao 2018-11-17 00:20
To milion. - kzkzg 2018-11-17 00:23
nie o to chodziło, mniejsza :P - WeiXiao 2018-11-17 00:24
Wiem. Wiem że Aggregate nie jest najszybsze. Ale je lubię :) - kzkzg 2018-11-17 00:29
@kzkzg Jak można dodawać stringi i kopiować stringi za jednym razem. Nawet jeśli nie planujesz często wywoływać metody, zrób to z użyciem StringBuilder, bo to dobrze nie wygląda. - Visual Code 2018-11-20 03:55

Pozostało 580 znaków

2018-11-16 20:31
0

Jezusku :D

Byłbyś w stanie to opisać jak to działa? (szybkiego ifa rozumiem, chodzi o samo aggregate)
Bo wygląda i działa super :)

edytowany 1x, ostatnio: Zirex312, 2018-11-16 21:11

Pozostało 580 znaków

2018-11-16 22:57
1

Szukałem sposobu, by zapisać to jak najkrócej.

public static string funkcja1 (string text)
{
    return Regex.Replace(text, @"([^\D_]+)", "");
}
edytowany 1x, ostatnio: Visual Code, 2018-11-16 23:02
A dałbyś radę tak krótko opisać jak to działa? :) - Zirex312 2018-11-17 00:03
Zastąp pustym stringiem jeden lub więcej ciągów liczby i podkreślenia. - Visual Code 2018-11-20 03:25

Pozostało 580 znaków

2018-11-17 00:09
0

a zwykła pętla?

private static string sprawdz_string2(string v)
{
    var sb = new StringBuilder(); // służy do budowania / składania stringa, ale wydajniej niż przy użyciu operatora +

    foreach (var letter in v)
    {
        if (char.IsLetter(letter) || letter == '-')
        {
            sb.Append(letter);
        }
    }

    return sb.ToString();
}
edytowany 4x, ostatnio: WeiXiao, 2018-11-17 00:11

Pozostało 580 znaków

2018-11-20 03:56

Jeżeli zależy ci na szybkości i zwięzłym zapisie to jest najlepsza opcja.

public static string test (string text)
{
    return text.Aggregate(new StringBuilder(), 
        (result, _char) => (char.IsLetter(_char) ||  _char is '-') ? result.Append(_char) : result,
        (result) => result.ToString());
}
edytowany 4x, ostatnio: Visual Code, 2018-11-21 16:39

Pozostało 580 znaków

2018-11-20 09:55
0

Dziękuję bardzo za podpowiedzi,
Do zamknięcia

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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