SORU
30 EKİM 2008, PERŞEMBE


Nasıl bir dize aksan (aksan) kaldırırım .NET?

Fransız Kanadalı bazı dizeleri dönüştürmek için çalışıyorum ve temelde, mektup tutarken harflerle Fransızca aksan işaretleri çıkarmak mümkün olmak istiyorum. (E. g. crème brûlée creme brulee olacak o kadar e) é dönüştürün

Bunu başarmak için en iyi yöntemi nedir?

CEVAP
30 EKİM 2008, PERŞEMBE


Bu yöntem kullandım, ama Michael Kaplan yani sıyırma aksan bahsettiği blog görevinden (kafa karıştırıcı bir başlık ile) yapmak için bir yöntem açıklanır: Stripping is an interesting job (aka On the meaning of meaningless, aka All Mn characters are non-spacing, but some are more non-spacing than others)

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

Bu onun daha önceki post için bir takip olduğunu unutmayın: Stripping diacritics....

Yaklaşım String.Normalize kurucu semboller içine giriş dizesi (temelde "temel" aksan karakterleri) ve sonuç olarak tarar ve sadece temel karakterler korur. ayırmak bölmek için kullanır Biraz karışık bir durum ama gerçekten karmaşık bir sorun bakıyorsunuz.

Eğer Fransız kendinizi sınırlıyorsunuz ki muhtemelen basit tabanlı bir tablo @David Dibben tarafından tavsiye edilen How to remove accents and tilde in a C std::string yaklaşım ile.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • PoreoticsHD

    PoreoticsHD

    22 NİSAN 2010
  • Rickymon Tero

    Rickymon Ter

    1 Ocak 2007
  • Vsauce

    Vsauce

    30 Temmuz 2007