2013-09-05 41 views

Trả lời

30

Trong C#, các ký tự Unicode đen \uXXXX nơi X 's là các ký tự hex sẽ cho phép bạn chỉ định Unicode nhân vật. Ví dụ:

  • \u00A3 là ký hiệu Pound, £.
  • \u20AC là ký hiệu Euro, €.
  • \u00A9 là biểu tượng bản quyền, ©.

Bạn có thể sử dụng các ký tự Unicode này giống như bất kỳ ký tự nào khác trong chuỗi. Ví dụ, "15 \u00A3 per item" sẽ là chuỗi "15 £ cho mỗi mục".

Bạn có thể đặt một chuỗi như vậy trong một hộp văn bản giống như bạn làm với bất kỳ chuỗi nào khác.

Lưu ý: Bạn cũng có thể chỉ cần sao chép (Ctrl + C) một biểu tượng tắt của một trang web, như Wikipedia (Pound sign), và sau đó dán (Ctrl + V) trực tiếp vào một chuỗi chữ trong tệp mã nguồn C# của bạn. Các tệp mã nguồn C# sử dụng Unicode nguyên bản. Cách tiếp cận này hoàn toàn làm giảm bạn từ bao giờ thậm chí phải biết bốn chữ số hex cho biểu tượng bạn muốn.

Để song song ví dụ trên, bạn có thể làm cho cùng một chuỗi chữ như chỉ đơn giản là "15 £ per item".

Edit: Nếu bạn muốn động tạo ra ký tự Unicode từ chuỗi hex của nó, bạn có thể sử dụng này:

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

Ví dụ, HexToChar("20AC") sẽ giúp bạn có được dấu hiệu Euro.

Nếu bạn muốn làm các hoạt động ngược lại động:

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

Ví dụ CharToHex('€') sẽ giúp bạn có "20AC".

Lựa chọn ushort tương ứng với phạm vi giá trị char có thể, hiển thị here.

+1

Hãy để tôi thử điều này. Không, tôi cần tạo động nó ** \ uXXXX **. Khi tôi cố gắng này: 'symbolSyntax = "\ u" + symbolSyntax' nó cần tôi để thoát khỏi \ u –

+2

@JeremyThompson Bạn có thực sự muốn tạo ra các nhân vật từ hex biểu tượng động như vậy? Nếu vậy tôi có thể cập nhật câu trả lời để bao gồm điều đó là tốt. –

+1

Xin vui lòng Tim, nhờ sự giúp đỡ của bạn. –

7

Tôi không thể tin rằng điều này rất khó tìm trên internet!

Dành cho các nhà phát triển trong tương lai, nếu bạn có ký tự unicode dễ làm. ví dụ:

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 
Các vấn đề liên quan