2011-07-29 42 views
10

Tôi cần định dạng GUID của mình theo định dạng đứt nét, tất cả chữ hoa. Tôi biết sử dụng myGuid.ToString("D") hoặc String.Format("{0:D}", myGuid) cho định dạng đứt nét, nhưng sử dụng một chữ hoa D như trái ngược với chữ thường d không cung cấp cho tôi một GUID cấp cao như tôi nghĩ. Có cách nào để làm điều này mà không làm bất cứ điều gì điên rồ, hay tôi chỉ cần gọi myGuid.ToString().ToUpper()?Định dạng chuỗi chữ hoa GUID .NET

Trả lời

8

làm tôi chỉ cần gọi myGuid.ToString().ToUpper()

Yep. Bạn có thể đi đến nỗ lực của việc tạo ra một IFormatProvider tùy chỉnh, nhưng nó không có vẻ giá trị nó ở đây.

1

Tôi không nghĩ bạn có bất kỳ lựa chọn nào khác ngoài việc chỉ thực hiện myGuid.ToString().ToUpper(). Mặc dù, bạn luôn có thể viết một phương pháp mở rộng, có lẽ một cái gì đó như ToUpperString, nhưng tôi không nghĩ rằng có bất cứ điều gì được xây dựng vào hệ thống.

14

Lưu ý rằng RFC 4122, trong đó xác định các đặc điểm kỹ thuật UUID, quy định rằng nhân vật đầu ra hex phải ở trong chữ thường khi chuyển đổi cơ cấu thành một chuỗi:

The hexadecimal values "a" through "f" are output as 
    lower case characters and are case insensitive on input. 

Điều này có thể giải thích tại sao cấu trúc Guid không hỗ trợ xuất ra trực tiếp như một chuỗi chữ hoa.

Vì tham số nhà cung cấp định dạng ToString bị bỏ qua, thay thế duy nhất (không chỉ đơn giản chuyển đổi chuỗi thành chữ hoa) sẽ trực tiếp thao tác các byte, trong khi cẩn thận bảo tồn tính cuối. Chỉ cần chuyển đổi sang chữ hoa (trực tiếp hoặc thông qua một phương thức mở rộng) có lẽ đơn giản hơn rất nhiều.

+1

Các spec quốc tế 2008-08, http: // www. itu.int/rec/T-REC-X.667/en, đồng ý với RFC 4122: '6.5.4 Phần mềm tạo biểu diễn hệ thập lục phân của UUID sẽ không sử dụng chữ hoa. LƯU Ý - Chúng tôi đề nghị rằng biểu diễn thập lục phân được sử dụng trong tất cả các định dạng có thể đọc được con người được giới hạn trong các chữ thường. Tuy nhiên, việc xử lý phần mềm biểu diễn này đòi hỏi phải chấp nhận cả chữ cái viết hoa và chữ thường như được quy định trong 6.5.2.' –

+0

Tôi biết đây là một số cái cũ nhưng tôi thấy thú vị là công cụ "Tạo GUID" trong Visual Studio tạo ra GUID chữ hoa. Ngoài ra bộ công cụ WIX đề xuất rằng GUID nên là chữ hoa để hỗ trợ hoàn toàn. Tôi không thể nhớ các chi tiết cụ thể của đề xuất đó mà tôi chỉ nhớ là đã đọc nó. –

0

Giả sử bạn có một lớp chứa Guid của bạn và bạn muốn giữ lại các Guid đánh máy, bạn có thể làm một cái gì đó như thế này:

public Guid Identifier { get; set; } 

public String FormattedIdentifier => Identifier.ToString().ToUpper(); 
+0

Sử dụng 'myGuid.ToString(). ToUpper()' giữ nguyên guid gốc trong 'myGuid'. Câu trả lời này không cung cấp một giải pháp mới cho câu hỏi ban đầu. –

+0

Tôi nghĩ rằng nó vẫn cung cấp một số giá trị. Ví dụ của tôi cho thấy cách bạn có thể gói gọn định dạng của Hướng dẫn. – FastBiscuit

Các vấn đề liên quan