【问题标题】:Remove accents from a text file从文本文件中删除重音符号
【发布时间】:2016-09-01 08:53:25
【问题描述】:

我在从文本文件中删除重音符号时遇到问题 程序将带有变音符号的字符替换为 ?这是我的代码:

        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);


            }

        }

【问题讨论】:

标签: c# user-interface diacritics


【解决方案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čľťšľžšžščýščýťčáčáčťáčáťýčťž");
    

    结果为@​​987654324@

    【讨论】:

      猜你喜欢
      • 2012-10-25
      • 1970-01-01
      • 2019-03-29
      • 2018-02-02
      • 2013-09-05
      • 2020-06-21
      • 1970-01-01
      • 1970-01-01
      • 2012-04-29
      相关资源
      最近更新 更多