Odstranění diakritiky
Požadavky na absolvování
2. OdstraneniDiakritikyWPF
2.5. Výsledný kód
XAML kód
Výsledný XAML kód formuláře (MainWindow.xaml) - viz Kód 1.
<Window x:Class="OdstraneniDiakritikyWPF.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:OdstraneniDiakritikyWPF" mc:Ignorable="d" Title="Odstranění diakritiky" Height="450" Width="800"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> <RowDefinition Height="Auto"/> </Grid.RowDefinitions> <Label Content="Odstranění diakritiky" FontSize="20" FontWeight="Bold" HorizontalAlignment="Center" Margin="0,10"/> <GroupBox Header="Vstupní data" Grid.Row="1" Margin="5,10"> <StackPanel Margin="5,10,5,5"> <Label Content="Zadejte vstupní text:" /> <TextBox Name="TxtVstupniText" Text="?" Margin="15,5,5,5" FontSize="14" FontWeight="Bold" Padding="5" TextWrapping="Wrap"/> </StackPanel> </GroupBox> <GroupBox Header="Výstupní data" Grid.Row="2" Margin="5,10"> <StackPanel Margin="5,10,5,5"> <Label Content="Výstupní text bez diakritiky:" /> <TextBox Name="TxtVystupniText" Margin="15,5,5,5" FontSize="14" FontWeight="Bold" Padding="5" IsReadOnly="True" TextWrapping="Wrap" Background="AliceBlue"/> </StackPanel> </GroupBox> <StackPanel Grid.Row="4"> <WrapPanel HorizontalAlignment="Center"> <Button Name="BtnOdstranitDiakritiku" Content="Odstranit diakritiku" Margin="5" Padding="10,5" Click="BtnOdstranitDiakritiku_Click"/> </WrapPanel> <WrapPanel HorizontalAlignment="Right"> <Button Name="BtnKonec" Content="Konec" Margin="5" Width="100" Padding="5" Click="BtnKonec_Click"/> </WrapPanel> </StackPanel> </Grid> </Window>
Kód 1: Výsledný XAML kód vytvořeného formuláře
C# kód
Code Behind - C# kód pro veškeré události vyvolané uživatelem při manipulaci s aplikací (MainWindow.xaml.cs) - viz Kód 2.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace OdstraneniDiakritikyWPF { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } #region Výpočty /// <summary> /// Metoda s návratem textového řetězce bez diakritických znamének /// </summary> /// <param name="s"> vstupní řetězec s diakritikou </param> /// <returns> výstupní řetězec bez diakritiky </returns> private string OdstranitDiakritiku(string s) { /* Deklarace: 'bezDia' ... výstupní řetězec, tj. vstupní řetězec po odstranění * diakritiky - inicializace; 'pocetZnaku' ... počet znaků ve vstupním řetězci - * inicializace */ string bezDia = ""; int pocetZnaku = s.Length; ; // Deklarace textového řetězce obsahujícího diakritiku včetně inicializace const string sDiakritikou = "ÁáČčĎďÉéĚěÍíŇňÓóŘřŠšŤťúůÚÝýŽž"; // Deklarace textového řetězce neobsahujícího diakritiku včetně inicializace const string bezDiakritiky = "AaCcDdEeEeIiNnooRrSsTtuuUYyZz"; /* Pro každý znak ve vstupním textovém řetězci - 'i' ... pozice znaku ve vstupním textovém řetězci */ for (int i = 0; i < pocetZnaku; i++) { /* Pokud textový řetězec s diakritikou obsahuje znak na 'i'-té pozici ve vstupním * textovém řetězci */ if (sDiakritikou.Contains(s[i]) == true) { /* Pro každý znak v řetězci 'sDiakritikou' - 'j' ... pozice znaku * v řetězci s diakritikou */ for (int j = 0; j <= sDiakritikou.Length - 1; j++) { /* Pokud se znak ve vstupním řetězci na pozici 'i' nachází také v textovém * řetězci 'sDiakritikou' (na pozici 'j'), tj. obsahuje diakritiku ... */ if (s[i] == sDiakritikou[j]) { /* Připoj znak z řetězce 'bezDiakritiky' na stejné pozici 'j', na které * byl vyhledán v řetězci 'sDiakritikou' (prohození znaku s diakritikou * za znak bez diakritiky) */ bezDia += bezDiakritiky[j]; } } } else { // Přidej znak ze vstupního řetězce do výstupního řetězce bezDia += s[i]; } } // Přiřazení návratu metody return bezDia; } #endregion #region Události private void BtnOdstranitDiakritiku_Click(object sender, RoutedEventArgs e) { /* Deklarace: 'vstupniText' ... textový řetězec zadaný uživatelem, u něhož * má být odstraněna diakritika */ string vstupniText; // Načtení textového řetězce zadaného na formuláři vstupniText = this.TxtVstupniText.Text; // Zavolání metody, která navrací textový řetězec bez diakritiky this.TxtVystupniText.Text = OdstranitDiakritiku(vstupniText); } private void BtnKonec_Click(object sender, RoutedEventArgs e) { // Zavření formuláře this.Close(); } #endregion } }
Kód 2: Výsledný C# kód vytvořeného formuláře a metod jeho prvků
Výstup programu
Na následujícím výstupu programu vidíme výpis textového řetězce, ze kterého byla odstraněna diakritika u všech písmen. Vstupní textový řetězec byl načten od uživatele na formuláři - viz Výstup programu - Kód 1 a 2.
Výstup programu - Kód 1 a 2: Ukázka výpisu textu s odstraněnou diakritikou (OdstraneniDiakritikyWPF)