Zamiana polskich liter w stringu

0

Witam,

Jak zamienić polskie znaki w zmiennej string na odpowiedniki bez ogonków?

Pozdrawiam,
d4

1

Przy użyciu metody string.Replace.

0

A co z niepolskimi, ß, á, š?
Albo chińskimi 施氏食獅史?

0

Polskich znaków, licząc osobno duże i małe znaki, jest 18. Sposób String.Replace zaproponowany przez somekind jest bardzo dobry, jeżeli wydajność nie jest istotne, to jest najprostszy sposób, ale ja mogę zaproponować inny sposób, który teoretycznie ma przewagę wydajnościową. W praktyce, dla pojedynczych konwersji krótkich tekstów różnica nie będzie zauważalna, dla długich tekstów nie testowałem.

StringBuilder Sb = new StringBuilder
int L = TextZrodlowy.Length;
for (int I = 0; I < L; I++)
{
    switch (TextZrodlowy[I])
    {
        case 'ą': TextDocelowy.Append('a'); break;
        case 'ć': TextDocelowy.Append('c'); break;
        case 'ę': TextDocelowy.Append('e'); break;
        case 'ł': TextDocelowy.Append('l'); break;
        case 'ń': TextDocelowy.Append('n'); break;
        case 'ó': TextDocelowy.Append('o'); break;
        case 'ś': TextDocelowy.Append('s'); break;
        case 'ź': TextDocelowy.Append('z'); break;
        case 'ż': TextDocelowy.Append('z'); break;
        case 'Ą': TextDocelowy.Append('A'); break;
        case 'Ć': TextDocelowy.Append('C'); break;
        case 'Ę': TextDocelowy.Append('E'); break;
        case 'Ł': TextDocelowy.Append('L'); break;
        case 'Ń': TextDocelowy.Append('N'); break;
        case 'Ó': TextDocelowy.Append('O'); break;
        case 'Ś': TextDocelowy.Append('S'); break;
        case 'Ź': TextDocelowy.Append('Z'); break;
        case 'Ż': TextDocelowy.Append('Z'); break;
        default: TextDocelowy.Append(TekstZrodlowy[I]); break;
    }
}
String TextDocelowy = Sb.ToString();

Teoretyczna przewaga nad TekstDocelowy = TekstZrodlowy.Replace('ą', 'a').Replace('ę', 'e'); polega na tym, że Replace zwraca nowy tekst po dokonaniu zamiany. Jak się chce obsłużyć wszystkie znaki, to będzie 18 osobnych zamian, czyli 18 pełnych przebiegów po całym tekście i bedzie przy tym utworzonych 18 obiektów tekst. Mój sposób opiera się na założeniu, że jest tylko jeden przebieg, badane są poszczególne znaki i w zależności od znaku, do tekstu docelowego jest dołączany odpowiedni znak.

1 użytkowników online, w tym zalogowanych: 0, gości: 1