Подтвердить UUID без делителя «-»

1

Я получаю UUID в формате "005056963AB75FD48BDC59C100314C40" и хочу их проверить. Я пробовал код следующим образом:

public boolean isUUID(String uuid){

    try {
        UUID.fromString(uuid);
    } catch (Exception e) {
        return false;
    }
    return true;

}

Но это скажет мне, что "005056963AB75FD48BDC59C100314C40" не является допустимым идентификатором. С другой стороны, сайт http://guid.us/Test/GUID говорит мне об этом и возвращает мне UUID с добавлением "-". Есть ли элегантный способ проверить этот UUID в java или мне нужно вручную добавить "-" в нужные места?

Теги:
validation
uuid

2 ответа

2
Лучший ответ

попробуйте regex

    uuid = uuid.replaceAll("(.{8})(.{4})(.{4})(.{4})(.+)", "$1-$2-$3-$4-$5");
    UUID.fromString(uuid);
0

Вы можете использовать этот код регулярного выражения Java для размещения дефиса в нужном месте в строке UUID:

String s = "005056963AB75FD48BDC59C100314C40";
s = s.replaceAll(
        "(?i)([a-f0-9]{8})([a-f0-9]{4})([a-f0-9]{4})([a-f0-9]{4})([a-f0-9]{12})", 
        "$1-$2-$3-$4-$5");

System.out.printf("UUID: [%s]%n", s);
//=> 00505696-3AB7-5FD4-8BDC-59C100314C40

Обновление: не регулярное выражение (thnks to @atamanroman)

StringBuilder sbr = new StringBuilder(s);
for(int i=8, j=0; i<=20; i+=4, j++)
    sbr.insert(i+j, '-');

UUID uuid = UUID.fromString( sbr.toString() );
  • 1
    Я бы предпочел StringBuilder#insert(pos, "-") вместо этого сумасшедшего регулярного выражения.
  • 0
    Спасибо @atamanroman, хороший момент, я отредактировал соответственно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню