Kezdőoldal » Számítástechnika » Programozás » Üdv, olyanokhoz szól a kérdése...

Üdv, olyanokhoz szól a kérdésem, akik jártasak c# programozásban!?

Figyelt kérdés
Arra lennék kíváncsi, hogy ha van egy string-em, ami tartalmaz egy szöveget pl.: string row="01"|""valami* "valami2"; akkor, hogy lehetne megoldani, hogy kiszedjük a ",*,| karaktereket és string listákba külön tároljuk a szavakat (pl string szo="valami";) régebben free pascalban csináltam ilyet itt viszont nem tudom, hogy lehet megvalósítani.
2015. szept. 4. 18:23
 1/7 anonim ***** válasza:
100%

pl. így:

string row = @"01""|""""valami* ""valami2";

var eredmeny = row.Split(new char[] { '"', '*', '|' }).Select(elem => elem.Trim()).Where(elem => !string.IsNullOrEmpty(elem));

foreach (string elem in eredmeny) // elemenként kilistázzuk a tömböt

{

Console.WriteLine(elem);

}

2015. szept. 4. 19:12
Hasznos számodra ez a válasz?
 2/7 SimkoL ***** válasza:
Milyen nyelven ?
2015. szept. 4. 19:35
Hasznos számodra ez a válasz?
 3/7 SimkoL ***** válasza:
Bocs most látom, hogy C#.
2015. szept. 4. 19:36
Hasznos számodra ez a válasz?
 4/7 A kérdező kommentje:
Értem tehát ezzel kilistázzuk elemenként és ha én minden elemet el akarok menteni egy külön változóba?
2015. szept. 4. 19:43
 5/7 anonim ***** válasza:

A foreach csak a képernyőre való kiíratás miatt van a végén.

Az a hosszú sor a lényeg, egy ún. felsorolható string objektumba ( IEnumerable<string> ) darabolja bele a bemeneti stringet, az elemeit így lehet egyesével elérni:

eredmeny.ElementAt(0), eredmeny.ElementAt(1), stb...



De lehet rajta módosítani úgy, hogy hagyományos tömbként lehessen használni:


string[] eredmeny = row.Split(new char[] { '"', '*', '|' }).Select(elem => elem.Trim()).Where(elem => !string.IsNullOrEmpty(elem)).ToArray<string>();


ilyenkor így lehet elérni az elemeit:

eredmeny[0], eredmeny[1], stb...

2015. szept. 4. 19:58
Hasznos számodra ez a válasz?
 6/7 A kérdező kommentje:
Köszönöm szépen a válaszokat!
2015. szept. 4. 20:00
 7/7 anonim ***** válasza:

vagy használhatod a StringSplitOptions.RemoveEmptyEntries-t:

var eredmeny = row.Split(new[] { '"', '*', '|' }, StringSplitOptions.RemoveEmptyEntries);

Ez valamivel hatékonyabb, nem jön létre 2x a tömb (alapból tömböt ad vissza a Split), igaz, hogy ez nem fogja kiszűrni a whitespace only részeket (de az üres elemeket igen), de ez nem is votl benne a kérdésedben.


Tehát ennek az eredménye a megadott bemenetre:

01

valami

<space>

valami2

2015. szept. 4. 22:49
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!