2011-07-29 22 views
10

Necesito formatear mis GUID en formato discontinuo, todo en mayúsculas. Sé que usando myGuid.ToString("D") o String.Format("{0:D}", myGuid) da el formato discontinuo, pero usar mayúsculas D en contraposición a una minúscula d no me da un GUID en mayúsculas como pensé que sería. ¿Hay alguna manera de hacer esto sin hacer nada loco, o solo tengo que llamar al myGuid.ToString().ToUpper()?.NET GUID formato de cadena en mayúsculas

Respuesta

8

lo hacen sólo hay que llamar myGuid.ToString().ToUpper()

Sip. Podría hacer el esfuerzo de crear un IFormatProvider personalizado, pero no parece valer la pena aquí.

1

No creo que tenga otra opción que simplemente hacer myGuid.ToString().ToUpper(). Aunque, siempre puedes escribir un método de extensión, tal vez algo como ToUpperString, pero no creo que haya nada integrado en el sistema.

14

Tenga en cuenta que RFC 4122, que define la especificación UUID, estipula que los caracteres hexadecimales de salida deben estar en minúsculas al convertir la estructura en una cadena:

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

Esto puede explicar por qué la estructura Guid no admite la salida directamente como una cadena en mayúscula

Dado que se ignora el parámetro de proveedor de formato ToString, la única alternativa (sin simplemente convertir la cadena en mayúscula) sería manipular directamente los bytes, teniendo cuidado de preservar el endianness. Simplemente convertir a mayúsculas (ya sea directamente oa través de un método de extensión) es probablemente mucho más sencillo.

+1

La especificación internacional de 2008-08, http: // www. itu.int/rec/T-REC-X.667/en, concuerda con ese RFC 4122: '6.5.4 El software que genera la representación hexadecimal de un UUID no debe usar letras mayúsculas. NOTA - Se recomienda que la representación hexadecimal utilizada en todos los formatos legibles por humanos se restrinja a letras minúsculas. Sin embargo, el software que procesa esta representación requiere aceptar letras mayúsculas y minúsculas como se especifica en 6.5.2. –

+0

Sé que esto es algo antiguo, pero me parece interesante que la herramienta "Crear GUID" en Visual Studio genera GUID en mayúsculas También el conjunto de herramientas WIX recomienda que los GUID deben estar en mayúsculas para soporte completo. No recuerdo los detalles de esa recomendación, solo recuerdo haberla leído. –

0

Asumiendo que tiene una clase que tiene su GUID y que le gustaría retener el mecanografiado Guid, se podría hacer algo como esto:

public Guid Identifier { get; set; } 

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

Usando 'myGuid.ToString(). ToUpper()' conserva el guid original en 'myGuid'. Esta respuesta no proporciona una nueva solución a la pregunta original. –

+0

Creo que todavía proporciona algún valor. Mi ejemplo muestra cómo puede encapsular el formato del Guid. – FastBiscuit