En mi proyecto, uso UUID.fromString()
para convertir cadena a UUID
pero si la cadena no es UUID
tipo, arrojará exception
entonces, ¿cómo puedo validar esta cadena?
¿Cómo juzgar que una cadena es de tipo UUID? [duplicate]
Maneje la excepción y haga algo en ese caso. Por ejemplo :
try{
UUID uuid = UUID.fromString(someUUID);
//do something
} catch (IllegalArgumentException exception){
//handle the case where string is not valid UUID
}
-
Puede que no sea excepcional tener datos que contengan UUID y otros elementos. Las excepciones deben ser excepcionales, no rutinarias; no use excepciones para el control de flujo. Existen una serie de razones para esto.
– erickson
18 de noviembre de 2013 a las 15:36
-
Es razonable manejarlo allí si, en el contexto de su aplicación, espera tener un UUID y sería excepcional que la cadena tuviera un formato no válido. Por otro lado, si su aplicación es un analizador y la gramática acepta UUID e identificadores de otros tipos en una alternativa particular, probar el formato de esta manera sería inapropiado.
– erickson
18 de noviembre de 2013 a las 17:15
-
¡Esto no funcionaría! Me encontré con un problema en el que someUUID es “1-1-1-1-1” pero UUID.formString (“1-1-1-1-1”) devolvió “00000001-0001-0001-0001-000000000001”, básicamente se convierte en una representación UUID. necesitas usar expresiones regulares como
Pattern p = Pattern.compile("[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$");
y entoncesp.matcher(uuidString).matches();
– mkilic
23 de marzo de 2016 a las 15:06
-
Tenga en cuenta que esto no funciona para Java 8. Consulte aquí bugs.java.com/view_bug.do?bug_id=8159339 . Como alternativa, puede utilizar “UUID.fromString(uuid).toString().equals(uuid)”
– ampolla
8 de agosto de 2018 a las 11:57
-
@mkilic Suena como un error en el JDK. También apesta que no tenemos
UUID.tryParse(String value)
o similar.– josh m.
4 de enero de 2019 a las 14:11
Imrán
Debe usar expresiones regulares para verificarlo, por ejemplo:
^[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}$
pruebalo con huevo 01234567-9ABC-DEF0-1234-56789ABCDEF0
o con corchetes
^\{?[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}\}?$
-
Solo tiro mis 2 centavos aquí, ya que vi la otra respuesta con 35 votos a favor. La gente debería usar este si esas son las 2 opciones. Principalmente porque descubrí que el JDK que estaba usando simplemente lanzaba la excepción basada en esta trivia si ->
String[] var1 = var0.split("-"); if (var1.length != 5) { throw new IllegalArgumentException("Invalid UUID string: " + var0); }
– Víctor
9 de marzo de 2018 a las 19:02
-
stackoverflow.com/questions/18724750/…
– Víctor
9 de marzo de 2018 a las 22:15
-
La segunda expresión regular anterior que permite corchetes tiene un problema. Considera válido un UUID con solo una llave de apertura o cierre, por ejemplo: {77921671-41fa-4f61-83ea-5d60b76a264e
– Martín Picker
4 de octubre de 2018 a las 12:44
-
Esto es mucho más propenso a romperse, y mucho más detallado e innecesario que un simple intento/captura para analizar el UUID como en otra respuesta aquí.
– josh m.
4 de enero de 2019 a las 14:10
-
Puede condensar la redundancia de los grupos de longitud {4} envolviéndolos en un grupo sin captura con un cuantificador {3}. Por ejemplo (^[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12}$)
– TomPlum
15 de noviembre de 2019 a las 9:37
Pruebe stackoverflow.com/questions/18724750/… – puede ser justo lo que está buscando.
– Ewald
18 de noviembre de 2013 a las 5:58
Posible duplicado de: stackoverflow.com/questions/7905929/how-to-test-valid-uuid-guid
– Masudul
18 de noviembre de 2013 a las 5:59
Agregué un validador UUID a Apache Commons Validator. Todavía no se ha fusionado, pero puedes votar por él aquí: github.com/apache/commons-validator/pull/68
– Daniel Heid
7 de enero a las 9:18