Regulární výraz - rozdělení řetězce – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Regulární výraz - rozdělení řetězce – .NET – Fórum – Programujte.comRegulární výraz - rozdělení řetězce – .NET – Fórum – Programujte.com

 

durmitor
~ Redaktor
0
Věrný člen
16. 10. 2008   #1
-
0
-

Zdravím,
tak jsem tu opět s dotaze, tentokrát se týká regulárních výrazů. Pro jednu aplikaci jsem si vymslel soubor, kde jeden řádek má například následující formát:

#TMSOP#16.10.2008;14:47:45@#OP01#0;1,412;1,404;1,380;1,373;1,380;1,412;1,412;1,412;1,420;8,7@#TMEOP#16.10.2008;14:48:51@


jednotlivé příkazy jsou uvozeny znaky '#' - začátek a '@' - konec.
Chtěl bych se zeptat, jestli by někdo nevěděl, jak rozdělit uvedený řetězec na pole podřetězců, kde každá z položek odpovídá pravidlu, že začíná znakem '#' a končí '@'. tedy:



#TMSOP#16.10.2008;14:47:45@
#OP01#0;1,412;1,404;1,380;1,373;1,380;1,412;1,412;1,412;1,420;8,7@
#TMEOP#16.10.2008;14:48:51@


Vím že by to šlo ručně, ale regulární výrazy se mi zdají takovým čistším řešením. Myslel jsem že by to mohlo fungovat s "#.*@" ale asi někde dělám chybu...
Předem díky

Nahlásit jako SPAM
IP: 77.236.208.–
Nejhorší není nemít práci. Nejhorší je nechtít práci...
Chrasty
~ Redaktor
+4
Posthunter
16. 10. 2008   #2
-
0
-

Můžeš použít třeba metodu Split ze třídy Regex:



string vstup = "#TMSOP#16.10.2008;14:47:45@#OP01#0;1,412;1";

string[] substrings = Regex.Split(vstup, "@");

Myslím, že je to přesně to co chceš.

Nahlásit jako SPAM
IP: 193.179.196.–
Anonymní uživatel
~ Anonymní uživatel
0 příspěvků
17. 10. 2008   #3
-
0
-

To durmitor : Me regularni vyrazy nikdy moc nesly ale melo pokud bys je chtel pouzit mohl by vyraz vypadat treba takhle:

(?<record>#[^@]*@)

pouziti pak napr:
string input = "#TMSOP#16.10.2008;14:47:45@#OP01#0;1,412;1,404;1,380;1,373;1,380;1,412;1,412;1,412;1,420;8,7@#TMEOP#16.10.2008;14:48:51@";

Regex reg = new Regex(@"(?<record>#[^@]*@)", RegexOptions.Compiled);
MatchCollection matches = reg.Matches(input);
//pristup k jednotlivym zaznamum pak pres matches[indexZaznamu].Result("${record}")

Nahlásit jako SPAM
IP: 194.213.32.–
Anonymní uživatel
~ Anonymní uživatel
0 příspěvků
17. 10. 2008   #4
-
0
-

To Anonymní uživatel : omluv cestinu, ted sem vstaval :)

Nahlásit jako SPAM
IP: 194.213.32.–
durmitor
~ Redaktor
0
Věrný člen
18. 10. 2008   #5
-
0
-

To Anonymní uživatel :
Díky vykouším

Nahlásit jako SPAM
IP: 77.236.208.–
Nejhorší není nemít práci. Nejhorší je nechtít práci...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 9 hostů

Podobná vlákna

Regulární výraz — založil Johny

Regularni vyraz — založil don_Dominique

Regulární výraz — založil Anonymní uživatel

Regulární výraz — založil Pilot

Regulární výraz — založil HoHo

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý