4 votes

HOWTO : convertir la représentation d'un caractère unicode dans une chaîne de caractères en un caractère unicode réel

J'utilise la police awesome dans une application Xamarin. L'api avec laquelle la XamarinApp communique renvoie une chaîne fxxx pour indiquer l'icône à afficher. Dans le code, j'ajoute \u mais il est considéré comme une chaîne de caractères et non comme un caractère unicode.

    var value = "f641";
    newLabel.Text = char.Parse($"\\u{value}").ToString();

J'ai essayé char.Parse mais il y a une erreur :

System.FormatException : String must be exactly one character long.

Des suggestions ?

6voto

CodeCaster Points 38181

Vous voulez avoir un Char détenant la valeur du point de code à usage privé U+F641 .

Vous pouvez le faire en l'analysant comme la valeur hexadécimale qu'il représente :

var input = "f641";
int p = int.Parse(input, System.Globalization.NumberStyles.HexNumber); // 63041

Puis le convertir en Char :

char c = (char)p;

En fonction de l'éventail des points de code possibles, il se peut que vous ne disposiez pas d'assez d'espace dans un char pour stocker le point de code, donc comme @Panagiotis l'indique, utilisez Char.ConvertFromUtf32(int) :

string chars = Char.ConvertFromUtf32(p);

Mais vous obtiendrez alors une chaîne de caractères, et non un seul caractère.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X