• 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

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
0 głosów
80 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 (330,920 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 71 wizyt
0 głosów
1 odpowiedź 221 wizyt
pytanie zadane 16 grudnia 2018 w C# przez ProCat Początkujący (310 p.)
–1 głos
3 odpowiedzi 271 wizyt

90,816 zapytań

139,494 odpowiedzi

313,557 komentarzy

60,313 pasjonatów

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...