Por favor dígame cómo validar GUID en .net y es único para siempre?Cómo validar Guid en .net
Respuesta
Las guías son únicas 99.99999999999999999999999999999999% de las veces.
Depende de lo que signifique por validar?
código para determinar que una cadena GUID es en realidad un Guid, es as follows:
private static Regex isGuid =
new Regex(@"^(\{){0,1}[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}(\}){0,1}$", RegexOptions.Compiled);
internal static bool IsGuid(string candidate, out Guid output)
{
bool isValid = false;
output = Guid.Empty;
if(candidate != null)
{
if (isGuid.IsMatch(candidate))
{
output=new Guid(candidate);
isValid = true;
}
}
return isValid;
}
+1 por tratar de no usar excepciones, -1 porque un 'Guid 'puede tener otros formatos y el método actual lanzará una excepción para el siguiente caso:" {230a0f8b-81fb-4052-866e-9 ac6a7611c77 " –
+1, en .NET 4.0, finalmente veremos la introducción de' Guid.TryParse() ', que obviamente sería preferible al uso de Regex. Por ahora, sin embargo, esto es perfectamente suficiente y aceptable. http://connect.microsoft.com/VisualStudio/feedback/details/94072/guid-tryparse –
Las guías no son aleatorias, tal vez también hay una forma de comprobar si cumplen estos criterios: http://blogs.msdn.com /b/oldnewthing/archive/2008/06/27/8659071.aspx –
Usted no puede validar la singularidad de GUID. Solo espera que se haya generado con una herramienta que produce 16 bytes únicos. En cuanto a la validación, el código simple podría trabajar (suponiendo que se trata de representación de cadena del GUID:
bool ValidateGuid(string theGuid)
{
try { Guid aG = new Guid(theGuid); }
catch { return false; }
return true;
}
Esa es la salida más fácil. Recuerde que las Excepciones deben usarse para circunstancias excepcionales, no para validar tipos. –
@Kyle Rozendo: Sí, pero con Regex, prácticamente limitas el formato de la representación de cadena de GUID. Por ejemplo, en su código, el formateo es WITH DASHES solamente. – Kerido
Sí, nunca nos gustaría tomar "la salida más fácil" cuando escribir toneladas de código para hacer lo mismo es mucho mejor ... ¿Qué pasaría si se tratara de una prueba unitaria? ¿Sería entonces aceptable? – iGanja
Si usted está buscando una manera de determinar si es el formato del actual tipo .Net Guid
, take a look at this article. Una expresión regular rápida es la que funciona.
2^128 es un número muy, muy grande. Es un billón de veces más grande que el número de picosegundos en la vida del universo. Demasiado grande por una oportunidad remota para validar, la respuesta está condenada a ser "42". Cuál es el punto de usarlos: no es necesario. Si te preocupa obtener duplicados, entonces te preocupas por el motivo equivocado. Las probabilidades de que tu máquina sea destruida por un meteoro acto son considerablemente más grandes.
Duck!
esta pregunta ya fue discutida en this post. Usted puede encontrar los detalles más interesantes
Aquí es una respuesta no-expresión regular que debe ser bastante rápido:
public static bool IsHex(this char c)
{
return ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
}
public static bool IsGuid(this string s)
{
// Length of a proper GUID, without any surrounding braces.
const int len_without_braces = 36;
// Delimiter for GUID data parts.
const char delim = '-';
// Delimiter positions.
const int d_0 = 8;
const int d_1 = 13;
const int d_2 = 18;
const int d_3 = 23;
// Before Delimiter positions.
const int bd_0 = 7;
const int bd_1 = 12;
const int bd_2 = 17;
const int bd_3 = 22;
if (s == null)
return false;
if (s.Length != len_without_braces)
return false;
if (s[d_0] != delim ||
s[d_1] != delim ||
s[d_2] != delim ||
s[d_3] != delim)
return false;
for (int i = 0;
i < s.Length;
i = i + (i == bd_0 ||
i == bd_1 ||
i == bd_2 ||
i == bd_3
? 2 : 1))
{
if (!IsHex(s[i])) return false;
}
return true;
}
En .NET 4, se puede utilizar este método de extensión
public static class GuidExtensions
{
public static bool IsGuid(this string value)
{
Guid output;
return Guid.TryParse(value, out output);
}
}
- 1. Cómo validar GUID es un GUID
- 2. Cómo convertir guid? guid
- 3. Guid de orden de bytes en .NET
- 4. .NET GUID formato de cadena en mayúsculas
- 5. ¿Cómo obtener GUID en android?
- 6. Convertir .NET Guid a MongoDB ObjectID
- 7. Prueba con un guid ... ¿cómo configuro la variable como Guid?
- 8. Cómo puedo crear un guid en MFC
- 9. ¿Cómo debo almacenar un GUID en Oracle?
- 10. cómo crear GUID?
- 11. Convertir de RAW (16) de Oracle a GUID de .NET
- 12. Validación de Guid
- 13. ¿Cómo validar una expresión regular?
- 14. Almacene el GUID en MySQL desde C#
- 15. Programación .Net: qué validar en un certificado SSL autofirmado
- 16. Convirtiendo un Guid a Nullable Guid
- 17. Generación de GUID
- 18. ¿Cómo generar un GUID en Oracle?
- 19. ¿Cómo puedo generar un GUID en Vim?
- 20. cómo crear GUID en Java EE
- 21. ¿Cómo declarar un Guid constante en C#?
- 22. ¿Cómo generar un GUID en VBScript?
- 23. ¿Cómo debo crear mi GUID?
- 24. Cómo convertir Guid [] a String?
- 25. Cómo validar colecciones en Maps
- 26. ¿Puedo mostrar GUID en windbg?
- 27. Referenciando GUID
- 28. Insertar GUID en SQL Server
- 29. ¿Cómo validar Markdown?
- 30. ¿Cómo validar un JTextField?
de Guid son siempre únicos si todos los generadores cumplen con las reglas: http://blogs.msdn.com/b/oldnewthing/archive/2008/06/27/8659071.aspx –