• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Porównywanie zmiennych typu string

Object Storage Arubacloud
0 głosów
223 wizyt
pytanie zadane 1 kwietnia 2022 w C# przez Nabuchadonozor Gaduła (3,120 p.)
zamknięte 1 kwietnia 2022 przez Nabuchadonozor

Witam,

piszę taki prosty program odnośnie bazy danych haseł i nie do końca mam plan na to jak rozwiązać pewną kwestię.

Otóż potrzebuję napisać "wyszukiwarkę", która ma za zadanie pobrania od użytkownika frazy (np. facebook, league, counter, insta), a następnie porównać ze wszelkimi już zapisanymi nazwami, czyli mamy np.

List<string> names = new List<string>();

names.Add("facebook.com");
names.Add("terytorialsi.pl");
names.Add("league of legends");
names.Add("instagram.com");

teraz wpisując do konsoli frazę "league" chciałbym, żeby program mi porównał tego wpisanego string'a z wszelkimi z listy i zwrócił wynik mówiący, do którego konkretnie indexu listy ta moja fraza jest najbardziej podobna.

Szukałem długo, ale nic nie mogę znaleźć żadnej takiej gotowej funkcji... Czy jest ktoś w stanie naprowadzić mnie do celu? Z góry dziękuję :)

komentarz zamknięcia: Napisałem w komentarzu rozwiązanie
komentarz 1 kwietnia 2022 przez Nabuchadonozor Gaduła (3,120 p.)

Rozwiązałem problem, jeszcze całkiem nie przeanalizowałem tego co się dzieje wewnątrz, ale prosty kod do zrozumienia:

string[] sentences =
{
    "facebook.com",
    "terytorialsi.pl",
    "league of legends"
};

string sPattern = "league";

foreach (string s in sentences)
{
    if (System.Text.RegularExpressions.Regex.IsMatch(s, sPattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase))
    {
        Console.Write(s);
    }
    else
    {
        Console.WriteLine();
    }
}

Dziękuję za wizyty :)

2
komentarz 1 kwietnia 2022 przez adrian17 Ekspert (344,860 p.)
edycja 1 kwietnia 2022 przez adrian17

To nie sprawdza podobieństwa, to tylko sprawdza czy tekst zawiera "league" (ignorując wielkość znaków). W dodatku to regex, więc kompletnie się pogubi jeśli we wzorcu będą niektóre znaki specjalne jak .$^[]()?

Do czegoś takiego to równie dobrze mogłeś prościej napisać

if (s.Contains("league", StringComparison.CurrentCultureIgnoreCase))

Ale zakładam że chodzi Ci o faktyczne podobieństwo?

1
komentarz 1 kwietnia 2022 przez Nabuchadonozor Gaduła (3,120 p.)
Znaczy się może źle się wyraziłem, ale ogólnie rzecz biorąc taki wynik tej metody(?) był wystarczający. Ogólnie to program na potrzeby własne, no i żeby uzyskać oceny w szkole. Co prawda znaków specjalnych nie będę nigdy miał w tych nazwach, ale no zmieniłem na to co napisałeś, z racji iż nie dość, że wygląda bardziej przyjemnie, to już na przyszłość będę znał lepsza praktykę :)

Dzięki wielkie i miłego!

Podobne pytania

0 głosów
0 odpowiedzi 86 wizyt
0 głosów
1 odpowiedź 762 wizyt
pytanie zadane 16 grudnia 2018 w C# przez ProCat Początkujący (310 p.)
–1 głos
3 odpowiedzi 417 wizyt

92,555 zapytań

141,402 odpowiedzi

319,538 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...