2011-03-02 16 views
5

Sembolleri C# içindeki dizelerden nasıl değiştirebiliriz? BuC# içindeki semboller arasındaki sembolleri değiştirin. #

Giriş gibi

: "�Click me."

Çıktı: "Click me.";

+7

İlk etapta nasıl bu sembolleri aldınız? Kırık kodlama yapmış gibi gözüküyor. Değiştirmek bir çözüm değil. Sorunu kökleri ile karıştırın: Bu dizgiyi alma şeklinizi düzeltin ve ölü bir şeyi yeniden diriltmeye çalışmayın. –

+0

Bir [kodlama/kod sayfası sorunu] gibi görünüyor (http://www.joelonsoftware.com/articles/Unicode.html). –

+0

Sadece alfanümerik ve noktalama işaretleri değil, her şeyi kaldırmaya mı çalışıyorsunuz? –

cevap

7

Tüm ASCII olmayan karakterleri dizinizden çıkarmak basit bir çözüm olacaktır. - ille olmayabilir burada bir regex kullanarak

olarak sözü rağmen
string s = "�Click me."; 
s = Regex.Replace(s, @"[^\u0000-\u007F]", ""); 

, bu bir kodlama/kod sayfası sorun olabilir: this question bu mevcut yapmak birkaç yolu, muhtemelen olurdu en basit olan vardır uygun çözüm.

DÜZENLEME: yorumlarınıza dayanarak, burada bir kaç diğer desenler deneyebileceğiniz şunlardır:

s = Regex.Replace(s, @"[^\u0020-\u007F]", ""); 

alfasayısal hariç her şeyi kaldırın:

tüm ASCII olmayan karakterler ve ASCII kontrol karakterleri kaldırın ASCII karakterleri:

s = Regex.Replace(s, @"[^A-Za-z0-9]", ""); 
+0

ascii olmayan karakterleri değiştirdikten sonra xml yazmaya çalıştığımda hala bu hatayı alıyorum "hexadecimal değeri 0x05 geçersiz karakter" – Novice

+0

@Novice '0x05' bir ASCII denetim karakteridir. Bunları da kaldırmak isterseniz, cevabımda yazılanlar yerine bunu kullanabilirsiniz: 's = Regex.Replace (s, @" [^ \ u0020- \ u007F] "," ");'. Girişinizi nereden alıyorsunuz? – Donut

+0

Mysql veritabanından girdi alıyorum. Tablodaki karakter karakter kümesi "utf_8" – Novice

2
var output = input.Replace("�",""); 

Simples!

+1

Evet, ama ' ' ekranda gördüğünüz şey, gerçek değer muhtemelen başka bir şeydir, bu yüzden bu değiştirme muhtemelen çok fazla yapmaz. –

+0

Tamamen, doğrudan soruyu cevapladım - "C# dizisindeki sembollerin yerini nasıl değiştirebiliriz" – Jamiec

+0

@Darin Dimitrov: Bu kesinlikle düşünceyi kaldıracaktır? – Kurru

2
Ayrıca unicode blok adları kullanabilirsiniz

:

source = Regex.Replace(source , @"\p{name}", ""); 

Adların bir listesi this article. içinde bulunabilir. Karakterinizin engellenmesini engelleyeceğinden emin değilim.

İlgili konular