asp.net 2.0 a c# - 1026
ASP.NET 2.0 a C# - tvorba dynamických stránek profesionálně
1029
<]+)> Tento výraz odpovídá znaku <, kterým značka začíná, za nímž pak následuje sekvence jednoho nebo více zna ků, které nejsou shodné se znakem >. Srovnávání skončí, jakmile je nalezen znak >. Tento výraz porovnává jak počáteční značky (jako například ), tak i koncové značky (jako například ). TIP Možná jste uvažovali o tom, že byste mohli pro srovnání značek použít jednodušší regulární výraz - jako například <. + >. Problém je v tom, že regulární výrazy používají tzv. "chamtivé srovnávání" (greedy matching). To znamená, že regulární výraz <.+> bude porovnávat všechno mezi znakem < úplně první X L značky a znakem > M poslední X L značky na konci dokumentu. Řečeno jinými slovy - skončíte u jediného srovnání, které pohřbí jiná M vnořená srovnání. Pokud chcete předejít tomuto chování, musíte vytvořit takový regulární výraz, který explicitně specifikuje, u kterých znaků nechcete provádět srovnání. jakmile máte srovnání, můžete nahradil tento text za vámi požadovaný text. Nahrazovati výraz vypadá néjak takto: <$l&gť. Toto nahrazení používá HTML entity (< a >) pro znak < a znak >, a přidává HTML značku pro tučné zvýrazněni textu. Entita $1 je tzv. zpětná reference (back reference), která se ve vyhledávacím výrazu odkazuje na text v závorce. V tomto příkladu obsahuje text v závorce celý název značky - tzn. všechno mezi otevíracím znakem < a uzavíracím znakem >. Jakmile jsou značky vyznačeny tučné, dalším krokem je nahradit mezery v řetězci za entity , aby byla zachována všechna prázdná místa. Současné je užitečné nahradit všechny znaky pro zalomení řádku za odpo¬ vídající HTML značku , která specifikuje konec řádku. Toto je kompletní kód pro naformátování textu XML: public static string ConvertXmlTextToHtmlText(string inputText) { // Nahraď všechny počáteční a koncové značky. string startPattern = @"<([ >] + )>"; Regex regEx = nw Regex(startPattern); e string outputText = regEx.Replace(inputText. "<:$l>:"); outputText = outputText,Replace(" ". " "); outputText = outputText.Replace("\r\n". ""); return outputText; } Zbytek kódu XmlLabel je už velmi jednoduchý. Nepřidává totiž žádné nové vlastnosti, pouze překryje RenderContents(), čímž se zajišťuje, že bude realizován naformátovaný text místo obyčejného textu. protected override void RenderContents(HtmlTextWriter output)
A {
string xmlText = XmlLabel.ConvertXmlTextToHtmlText(Text); output.Write(xmlText); >
- Pro možnost psaní komentářů se přihlašte nebo zaregistrujte.


































































