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
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.
Nasıl haşat yolunu dize dosya soneki v...
Bir şekilde aksan kurtulmak ve düzenli...
Nasıl bir dize düzenli ifade kullanara...
Nasıl bir dize başka bir dize içeriyor...
Nasıl doğru ActionScript 3 SOAP web se...