Regulérní výrazy   zodpovězená otázka

C#, VB.NET, Algoritmy

Zdravím,

mám drobný problém:

Mám String "0{10}" a potřebuji najít způsob jakým bych to převedl na "0000000000". Syntaxe prvního řetězce může být prakticky jakákoliv, jde mi hlavně o to abych mohl "komprimovat" řetězec kde se vyskytuje více zanků za sebou na ten zkrácený zápis a pak zase "dekomprimovat".

Vlákno jsem nadepsal regulérní výrazy, protože tuším, že by se zde mohla objevit souvislost.

Díky za náměty

nahlásit spamnahlásit spam 0 odpovědětodpovědět

No, i když regulární výrazy by se zde využít možná daly (akorát mě nenapadá jak), skoro bych raději doporučil udělat to ručně. Pokud můžeš změnit syntaxi zkomprimovaného řetězce, pak bych možná počet opakování dával před znak, který se má opakovat, bude se to totiž o poznání lépe programovat.

Program ti psát nebudu, ten určitě vymyslíš sám, ale nejjednodušší bude udělat cyklus, který projde všechny znaky zkomprimovaného textu. Pokud narazí na normální znak, jednoduše ho přidá do výsledku, pokud narazí na znak {, přečte si číslo v závorkách (nejlépe nějakým While cyklem) a následující znak přidá tolikrát, co našel v té závorce.

A ještě určitě použij na skládání výsledného textu StringBuilder, ať to není ukrutně pomalé.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Díky za radu, včera jsem na tom pracoval a ošetřil jsem si zachycení chybné syntaxe a teď když vím na čem jsem tak se do toho pustím. Cená je také rada se StringBuilderem, protože to by mě nenapadlo.

Šťastné a veselé

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokud někde skládáš víc než 5 Stringů dohromady, určitě se vyplatí StringBuilder použít, je to znatelně rychlejší a nežere to tolik paměti.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback