web-dev-qa-db-fra.com

Comment insérer un symbole (livre, euro, droit d'auteur) dans une zone de texte

Je peux utiliser le Alt Tapez avec le pavé numérique pour taper des symboles, mais comment puis-je insérer par programme un symbole (livre, euro, droit d'auteur) dans une zone de texte?

J'ai un écran de configuration, j'ai donc besoin de créer dynamiquement les\uXXXX.

enter image description here

15
Jeremy Thompson

En C #, le littéral de caractère Unicode \uXXXX Où les X sont des caractères hexadécimaux vous permettra de spécifier des caractères Unicode. Par exemple:

  • \u00A3 Est le signe dièse, £.
  • \u20AC Est le signe Euro, €.
  • \u00A9 Est le symbole du copyright, ©.

Vous pouvez utiliser ces littéraux de caractères Unicode comme tout autre caractère dans une chaîne.

Par exemple, "15 \u00A3 per item" Serait la chaîne "15 £ par article".

Vous pouvez placer une telle chaîne dans une zone de texte comme vous le feriez avec n'importe quelle autre chaîne.

Remarque: Vous pouvez également simplement copier (Ctrl+C) un symbole hors d'un site Web, comme Wikipedia (signe dièse) , puis collez (Ctrl+V) directement dans un littéral de chaîne dans votre fichier de code source C #. Les fichiers de code source C # utilisent Unicode en mode natif. Cette approche vous évite complètement d'avoir à connaître les quatre chiffres hexadécimaux du symbole que vous souhaitez.

Pour mettre en parallèle l'exemple ci-dessus, vous pouvez rendre la même chaîne littérale que simplement "15 £ per item".

Modifier: Si vous voulez dynamiquement créer le caractère Unicode à partir de sa chaîne hexadécimale, vous pouvez utiliser ceci:

public static char HexToChar(string hex)
{
    return (char)ushort.Parse(hex, System.Globalization.NumberStyles.HexNumber);
}

Par exemple, HexToChar("20AC") vous donnera le signe Euro.

Si vous souhaitez effectuer l'opération inverse de manière dynamique:

public static string CharToHex(char c)
{
    return ((ushort)c).ToString("X4");
}

Par exemple CharToHex('€') vous obtiendrez "20AC".

Le choix de ushort correspond à la plage de valeurs char possibles, indiquée ici .

34
Timothy Shields

Je ne peux pas croire que c'était difficile à trouver sur Internet!

Pour les futurs développeurs, si vous avez le caractère unicode, c'est facile à faire. par exemple:

C #:

var selectionIndex = txt.SelectionStart;

string copyrightUnicode = "00A9";
int value = int.Parse(copyrightUnicode, System.Globalization.NumberStyles.HexNumber);
string symbol = char.ConvertFromUtf32(value).ToString();

txt.Text = txt.Text.Insert(selectionIndex, symbol);
txt.SelectionStart = selectionIndex + symbol.Length;

VB.Net

Dim selectionIndex = txt.SelectionStart

Dim copyrightUnicode As String = "00A9"
Dim value As Integer = Integer.Parse(copyrightUnicode, System.Globalization.NumberStyles.HexNumber)
Dim symbol As String = Char.ConvertFromUtf32(value).ToString()

txt.Text = txt.Text.Insert(selectionIndex, symbol)
txt.SelectionStart = selectionIndex + symbol.Length
9
Jeremy Thompson