2010-06-29 35 views

Trả lời

12

Các ngôn ngữ C# hỗ trợ này với thoát:

var str = "\u0030More text"; 

Nhưng điều đó không có sẵn trong VB.NET. Cẩn thận rằng bạn gần như chắc chắn không muốn sử dụng Chr(), điều đó có nghĩa là cho mã kế thừa hoạt động với trang mã mặc định. Bạn sẽ muốn ChrW() và chuyển mã Unicode.

Ví dụ cụ thể của bạn không phải là vấn đề, & H0030 là mã cho "0" để bạn có thể chỉ cần đặt trực tiếp vào chuỗi ký tự.

Dim str As String = "0MoreText" 

Bạn có thể sử dụng tiện ích Charmap.exe để sao chép và dán glyph không có mã ASCII dễ dàng.

+0

\ u0030 là một đồng bằng 0-0 có giá trị 48, tương đương với 0x30, đó là điểm mã yêu cầu, như những người thoát được viết bằng hệ thập lục phân. Có thể bạn đang nghĩ đến * thập phân * 30, \ u001e, theo http://www.unicode.org/charts/PDF/U0000.pdf, là một ký tự điều khiển được gọi là Record Separator (hoặc THÔNG TIN SỐ HAI trong Unicode) . (Nó * không * tồn tại như một codepoint, nhưng nó không có glyph vì nó có nghĩa là một nhân vật không thể in.) –

+0

Rất tiếc, bạn nói đúng. Đã cập nhật bài đăng. –

+1

+1: để cho người đọc biết về tiện ích * Character Map * (charmap.exe).Mẹo tuyệt vời mà tôi sử dụng mọi lúc. – AMissico

23

Sử dụng chức năng ChrW() để trả về các ký tự Unicode.

Dim strW As String 
strW = ChrW(&H25B2) & "More text" 
1

Tôi sử dụng Bản đồ ký tự tiện ích (charmap.exe). Chạy và chọn các ký tự bạn muốn trong phông chữ của điều khiển, chẳng hạn như © Missico ™, sao chép rồi dán vào thuộc tính Text trong lưới thuộc tính. Bạn sẽ phải thay đổi phông chữ vì phông chữ mặc định cho biểu mẫu là "Microsoft Sans Serif" không phải là phông chữ Unicode. Tôi không nghĩ rằng bạn có thể sử dụng phương pháp này cho các ký tự không thể in được.

Tùy thuộc vào nhu cầu của bạn, bạn cũng có thể sử dụng Bản địa hóa, tạo tệp tài nguyên cho từng ngôn ngữ. Một lần nữa, bạn sẽ sử dụng charmap.exe để chọn và sao chép các ký tự cần thiết và dán vào tệp tài nguyên. Bạn có thể sử dụng các ký tự không in được, chẳng hạn như các tab, dòng mới, v.v. vì đây chỉ là một tệp văn bản (Unicode).

+0

Điều này sẽ không giải quyết được vấn đề khi tệp mã được viết trong bộ ký tự không hỗ trợ các ký tự đó - và có thể gây ra vấn đề nếu phông chữ của trình soạn thảo của bạn không hỗ trợ tất cả các ký tự Unicode. Không phải là một giải pháp tốt! –

+1

Nhưng nó * là * giải pháp tốt nhất nếu tệp được viết bằng mã hóa Unicode (vì tất cả các tệp văn bản hiện đại phải là) và nếu phông chữ hỗ trợ các ký tự. – Philipp

0

Tôi đã hy vọng bạn có thể sử dụng XML literals và XML escapes nhưng nó không hoạt động. Tôi không nghĩ rằng XML literals cho phép bạn sử dụng &#NN;. Mặc dù it is a way bao gồm các báo giá " bên trong các chuỗi.

'Does not compile :(' 
Dim myString = _ 
<q>This string would contain an escaped character &#30; if it actually compiled.</q>.Value 
0

Không, không thể vì chuỗi VB không hỗ trợ chuỗi thoát. Đơn giản chỉ cần sử dụng ChrW, đó là một vài ký tự hơn để loại, nhưng cũng có một chút sạch hơn.

+0

Nó không phải là nó gõ nhiều hơn nó là nó không thể được thực hiện trong các nhà thiết kế mẫu và thiết kế của nó tẻ nhạt hơn một hình thức khi bạn phải chạy nó mọi lúc bạn muốn xem nó. – CodeFusionMobile

4

Thay Chr với Convert.ToChar:

str = Convert.ToChar(&H0030) & "More text" 
Các vấn đề liên quan