PARTNERI:
-UPOZORENJE-

Samo registrovani članovi mogu da vide/koriste forum u celini.
Prijavite se ili registrujte nalog na Balkan SA-MP forumu.


Autor Tema: [Pomoc] U vezi Parsiranje Teksta C#  (Pročitano 369 puta)

0 članova i 1 gost pregledaju ovu temu.

Van mreže <sel1m>

U vezi Parsiranje Teksta C#
« poslato: Decembar 27, 2021, 03:02:29 pre podne »
Pozdrav, nedavno sam upisao ITAkademiju , odrasio sve taskove bla bla i ostao mi je zadnji(najtezi za mene jer sam opet pocetnik ) , u zadatku trebam da izdvojim znakove sa teksta i da ih svrstam u odredjene klase/konstruktore.

npr

Pawno Code: [Izaberi]
string text = "John.Davidson/Belgrade Michael.Barton/Krakow Ivan.Perkinson/Moscow".Treba output biti odprlk

Ime : John
Prezime : Davidson
Grad : Belgrade
itd itd..

Pokusavao sam sa stringBuilderom mada on nije za dekonstrukciju stringova vec za konstrukciju... Tako da jedino sto sam uspeo je da odvojim ove visak znakova oko teksta i to je to... Sve sem stringbuildera mi nije palo na pamet, jedino kroz neku petlju ali sam uvek ispadao iz velicine arraya. Pomoc bi mi znatno pomogla taman da vidim gde gresim i kako to da ispravim , hvala unapred.

Slika zadatka :



https://prnt.sc/24q5a5b
/\
 

Van mreže malibajo

  • Newbie
  • *
  • Poruke: 1
Odg: U vezi Parsiranje Teksta C#
« Odgovor #1 poslato: Decembar 28, 2021, 03:44:33 pre podne »
Mozes da koristis String.Split ili bilo sta za filtraciju stringova, mozes i rucno da ucitavas preko petlje mada ako ti vec dozvoljavaju String metode onda ih slobodno iskoristi.

Evo primer:

Pawno Code: [Izaberi]
class Program
    {
        static string text = "John.Davidson/Belgrade Michael.Barton/Krakow Ivan.Perkinson/Moscow";

        static void Main(string[] args)
        {
            string[] subs = text.Split(` `); // Delimo string `text` i sve delove cuvamo u subs nizu.
            char[] separators = new char[] { `.`, `/` }; // separatori za deljenje stringa kasnije za filtriranje podataka (ime, prezime, grad)

            // prolazimo kroz svaki string u subs nizu
            foreach (string sub in subs)
            {
                string[] data = sub.Split(separators, StringSplitOptions.RemoveEmptyEntries); // izvucemo podatke iz stringa i ubacujemo u niz stringova `data` brisuci separatore (. i /) te ce u niz data sve biti upisano redom. data[0] ime, data[1] prezime, data[2] grad
                Console.WriteLine("Ime: " + data[0] + " Prezime: " + data[1] + " Grad: " + data[2]); // klasican ispis u konzolu, ostalo ces verovatno sam odraditi, kreiranje klase Person, dodavanje u niz itd
 
            }

            Console.ReadLine(); // pauza da se konzola ne ugasi, nebitno uglavnom
        }
    }
 

Van mreže Deleted User

Odg: U vezi Parsiranje Teksta C#
« Odgovor #2 poslato: Decembar 28, 2021, 10:43:20 pre podne »
Ako je format uvek isti,  scanf funkcija (sscanf plugin u samp-u)
Takodje imas i explode funkciju (neznam jel nativna ili je library neki), prvo razdvoji podatke odvojene sa /  pa onda sa .
Mislim mozes na vise nacina, na kraju krajeva loop kroz string pa kopiraj delove u pomocne stringove...
 

Van mreže // xunder

Odg: U vezi Parsiranje Teksta C#
« Odgovor #3 poslato: Decembar 28, 2021, 18:54:52 posle podne »
Ako je format uvek isti,  scanf funkcija (sscanf plugin u samp-u)
Takodje imas i explode funkciju (neznam jel nativna ili je library neki), prvo razdvoji podatke odvojene sa /  pa onda sa .
Mislim mozes na vise nacina, na kraju krajeva loop kroz string pa kopiraj delove u pomocne stringove...

scanf ne postoji u C#

malibajo ti je napisao fensi rjesenje ako je format uvijek isti. Ukoliko hoces nesto kompleksnije vjv je regex odgovor u tom slucaju.

https://docs.microsoft.com/en-us/dotnet/api/system.text.regularexpressions.match.groups?view=net-6.0

Van mreže LoOdaK

Odg: U vezi Parsiranje Teksta C#
« Odgovor #4 poslato: Decembar 31, 2021, 09:36:04 pre podne »
Nekada davno sam radio sličan zadatak. Vjerovatno nije najbolje odrađeno ali ćeš shvatiti suštinu. Rađen je u javi.

private static Person[] parseString(String text) {

        String[] splittedPersonsArray = text.split(" ");
        Person[] persons = new Person[splittedPersonsArray.length];

        for (int i = 0; i < persons.length; i++) {

            Person person = new Person();

            // Sets name of the person
            person.setName(
                    splittedPersonsArray[i].substring(
                            0,
                            splittedPersonsArray[i].indexOf(".")));

            // Sets surname of the person
            person.setSurname(
                    splittedPersonsArray[i].substring(
                            splittedPersonsArray[i].indexOf(".") + 1,
                            splittedPersonsArray[i].indexOf("/")));

            // Sets birthplace of the person
            person.setPlace(
                    splittedPersonsArray[i].substring(
                            splittedPersonsArray[i].indexOf("/") + 1));

            persons[i] = person;
        }

        return persons;
    }
Citat
Electric Power is everywhere present in unlimited quantities and can drive the world's machinery without the need of coal, oil, gas, or any other of the common fuels!

Voli sve ne pravi razliku by LoOdaK


 

Van mreže Deleted User

Odg: U vezi Parsiranje Teksta C#
« Odgovor #5 poslato: Decembar 31, 2021, 11:53:26 pre podne »
scanf ne postoji u C#

malibajo ti je napisao fensi rjesenje ako je format uvijek isti. Ukoliko hoces nesto kompleksnije vjv je regex odgovor u tom slucaju.

https://docs.microsoft.com/en-us/dotnet/api/system.text.regularexpressions.match.groups?view=net-6.0
Moja greska, sad ni sam nmg da verujem da nema scanf u C#...
Imas split funkciju

new array = string.split("/"); //Gde je / delimiter. Prvo splituj / pa onda prodji kroz svaki splitovani string i split ga na .