2016-05-06 3 views
1

У меня проблемы с удалением акцентов из текстовой файловой программы, заменяющей символы диакритикой на? Вот мой код:Удалить акценты из текстового файла

 private void button3_Click(object sender, EventArgs e) 
     { 

      if (radioButton3.Checked) 
      { 
       byte[] tmp; 
       tmp = System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(richTextBox1.Text); 
       richTextBox2.Text = System.Text.Encoding.UTF8.GetString(tmp); 


      } 

     } 
+0

небольшой пример, пожалуйста, "удаления акцентов" –

+0

вход včľťšľžšžščýščýťčáčáčťáčáťýčťž -> vcltslzszscsctc cctctctz – printline

ответ

1
richTextBox1.Text = "včľťšľžšžščýščýťčáčáčťáčáťýčťž";    

string text1 = richTextBox1.Text.Normalize(NormalizationForm.FormD); 

string pattern = @"\p{M}"; 
string text2 = Regex.Replace(text1, pattern, "�"); 

richTextBox2.Text = text2; 

Первая normalize строка.
Затем с регулярным выражением замените все диакритики. Шаблон \p{M} - Unicode Category - Все диакритические знаки.

2

Взято отсюда: https://stackoverflow.com/a/249126/3047078

static string RemoveDiacritics(string text) 
{ 
    var normalizedString = text.Normalize(NormalizationForm.FormD); 
    var stringBuilder = new StringBuilder(); 

    foreach (var c in normalizedString) 
    { 
    var unicodeCategory = CharUnicodeInfo.GetUnicodeCategory(c); 
    if (unicodeCategory != UnicodeCategory.NonSpacingMark) 
    { 
     stringBuilder.Append(c); 
    } 
    } 

    return stringBuilder.ToString().Normalize(NormalizationForm.FormC); 
} 

использование:

string result = RemoveDiacritics("včľťšľžšžščýščýťčáčáčťáčáťýčťž"); 

vcltslzszscyscytcacactacatyctz приводит