2012-11-08 16 views
15

Powiel możliwe:
Converting Unicode strings to escaped ascii stringKonwersja ciąg reprezentacji unicode

Jak mogę przekonwertować ä... w coś podobnego \u0131...?

Czy jest jakaś funkcja do tego?

ps:

obok ten sposób: [przepraszam @Kendall Frey :-)]

char a = 'ä'; 
string escape = "\\u" + ((int)a).ToString("X").PadLeft(4, '0'); 
+0

@JonSkeet nie ma żadnej funkcji GOTOWE? –

+6

Jest * gotowy * do wycinania i wklejania ... –

+0

również kod 'string.isNullOrEmpty' można wycinać i wklejać, moje pytanie dotyczy gotowego, takiego jak' string.isNullOrEmpty' –

Odpowiedz

22

Oto funkcja konwersji char do sekwencji ucieczki:

string GetEscapeSequence(char c) 
{ 
    return "\\u" + ((int)c).ToString("X4"); 
} 

It nie będzie o wiele lepiej niż jedno-liniowy.

I nie, nie ma wbudowanej funkcji, o ile wiem.

+2

Podejrzewam, że istnieje sposób na poprawne wstawienie lewego dopełnienia w łańcuchu formatu zamiast wywoływania PadLeft ... –

+0

@JonSkeet - Wierzę, że po prostu zmieniam na 'ToString (" X4 ")' i upuszczam 'PadLeft' Zrób sztuczkę. –

+2

@JonSkeet Better? –

6

Brak wbudowanej funkcji AFAIK. Oto jedno całkiem głupie rozwiązanie, które działa. Ale Kendall Frey dostarczyła znacznie lepszy wariant.

string GetUnicodeString(string s) 
{ 
    StringBuilder sb = new StringBuilder(); 
    foreach (char c in s) 
    { 
     sb.Append("\\u"); 
     sb.Append(String.Format("{0:x4}", (int)c)); 
    } 
    return sb.ToString(); 
}