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
[pawn]string text = "John.Davidson/Belgrade Michael.Barton/Krakow Ivan.Perkinson/Moscow".[/pawn]
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)
https://prnt.sc/24q5a5b
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:
[pawn]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
}
}[/pawn]
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...
Citat: Deleted User 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...
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
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: // xunder poslato Decembar 28, 2021, 18:54:52 POSLE 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 .