2013-11-18 2 views
16

В моем проекте я использую UUID.fromString() для преобразования строки в UUID, но если строка не является UUID, она будет кидать exception, так как я могу проверить эту строку?Как судить строку - это тип UUID?

+1

Try Http: // StackOverflow .com/questions/18724750/foolproof-way-of-differiating-string-and-uuid - это может быть именно то, что вы ищете. – Ewald

+1

Возможное дублирование: http://stackoverflow.com/questions/7905929/how-to-test-valid-uuid-guid – Masudul

ответ

23

Вы должны использовать регулярное выражение, чтобы проверить его, например:

/^[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}$/ 

испытания его с яйцом -9ABC-DEF0-1234-56789ABCDEF0

или с кронштейнами

/^\{?[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

Просто бросаю мои 2 цента здесь, так как я видел другой ответ с 35 голосами. Люди должны использовать это, если это два варианта. В основном потому, что я обнаружил, что JDK, который я использовал, просто выбрасывал исключение на основе этой мелочи, если -> 'String [] var1 = var0.split (" - "); if (var1.length! = 5) { throw new IllegalArgumentException ("Неверная строка UUID:" + var0); } ' – Victor

+0

https://stackoverflow.com/questions/18724750/foolproof-way-of-differentiating-string-and-uuid – Victor

35

Обращайтесь к исключению и сделайте что-нибудь в этом случае. Например:

try{ 
    UUID uuid = UUID.fromString(someUUID); 
    //do something 
} catch (IllegalArgumentException exception){ 
    //handle the case where string is not valid UUID 
} 
+6

Возможно, было бы невероятно иметь данные, содержащие UUID и другие элементы. Исключения должны быть исключительными, а не рутинными; не используйте исключения для управления потоком. Для этого существует несколько причин. (Https://www.google.com/search?q=exception+flow+control) – erickson

+1

http://docs.oracle.com/javase/7/docs/api /java/util/UUID.html#fromString(java.lang.String), этот метод выдает это исключение. С этим вполне разумно обращаться. И эта обработка в этом конкретном случае, вероятно, будет лишь некоторым протоколированием для дальнейшего использования. –

+7

Разумно обрабатывать его там, если в контексте вашего приложения вы ожидаете иметь UUID, и это было бы исключительным для того, чтобы строка была недопустимым. С другой стороны, если ваше приложение является парсером, а грамматика принимает UUID и идентификаторы других типов в конкретной альтернативе, тестирование такого формата будет неуместным. – erickson

Смежные вопросы