Wie kann man beurteilen, ob eine Zeichenfolge vom Typ UUID ist? [duplicate]

Lesezeit: 3 Minuten

In meinem Projekt verwende ich UUID.fromString() Zeichenfolge zu konvertieren UUIDaber wenn die Zeichenfolge nicht ist UUID Typ, es wird werfen exceptionalso wie kann ich diese Zeichenfolge validieren?

  • Versuchen Sie es mit stackoverflow.com/questions/18724750/… – es könnte genau das sein, wonach Sie suchen.

    – Ewald

    18. November 2013 um 5:58 Uhr

  • Mögliches Duplikat von: stackoverflow.com/questions/7905929/how-to-test-valid-uuid-guid

    – Masul

    18. November 2013 um 5:59 Uhr

  • Ich habe dem Apache Commons Validator einen UUID-Validator hinzugefügt. Es wurde noch nicht zusammengeführt, aber Sie können hier dafür stimmen: github.com/apache/commons-validator/pull/68

    – Daniel Heide

    7. Januar um 9:18


Behandeln Sie die Ausnahme und unternehmen Sie etwas in diesem Fall. Zum Beispiel :

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

  • Es kann keine Ausnahme sein, Daten zu haben, die UUIDs und andere Elemente enthalten. Ausnahmen sollten außergewöhnlich sein, nicht routinemäßig; Verwenden Sie keine Ausnahmen für die Flusskontrolle. Es gibt eine Reihe von Gründen dafür.

    – Ericsson

    18. November 2013 um 15:36 Uhr

  • Es ist sinnvoll, es dort zu handhaben, wenn Sie im Kontext Ihrer Anwendung eine UUID erwarten und es ausnahmsweise wäre, wenn die Zeichenfolge ein ungültiges Format hätte. Wenn Ihre Anwendung andererseits ein Parser ist und die Grammatik UUIDs und Bezeichner anderer Typen bei einer bestimmten Alternative akzeptiert, wäre es unangemessen, das Format auf diese Weise zu testen.

    – Ericsson

    18. November 2013 um 17:15 Uhr

  • Das würde nicht funktionieren! Ich stoße auf ein Problem, bei dem die someUUID “1-1-1-1-1” ist, aber UUID.formString (“1-1-1-1-1”) “00000001-0001-0001-0001-000000000001” zurückgibt. im Grunde konvertiert es in eine UUID-Darstellung. Sie müssen Regex wie verwenden Pattern p = Pattern.compile("[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"); und dann p.matcher(uuidString).matches();

    – mkilic

    23. März 2016 um 15:06 Uhr


  • Bitte beachten Sie, dass dies nicht für Java 8 funktioniert. Siehe hier bugs.java.com/view_bug.do?bug_id=8159339 . Alternativ können Sie “UUID.fromString(uuid).toString().equals(uuid)” verwenden

    – Ampulle

    8. August 2018 um 11:57 Uhr

  • @mkilic Klingt nach einem Fehler im JDK. Auch Scheiße haben wir nicht UUID.tryParse(String value) oder ähnliches.

    – Josch M.

    4. Januar 2019 um 14:11 Uhr

Benutzer-Avatar
Imran

Sie sollten Regex verwenden, um es zu überprüfen, z. B.:

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

teste es mal mit ei 01234567-9ABC-DEF0-1234-56789ABCDEF0

oder mit Klammern

^\{?[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}‌​\}?$

  • Ich werfe hier nur meine 2 Cent, da ich die andere Antwort mit 35 positiven Stimmen gesehen habe. Die Leute sollten dieses verwenden, wenn dies die 2 Möglichkeiten sind. Hauptsächlich, weil ich herausfand, dass das JDK, das ich verwendete, einfach die Ausnahme basierend auf dieser Kleinigkeit auslöste, wenn -> String[] var1 = var0.split("-"); if (var1.length != 5) { throw new IllegalArgumentException("Invalid UUID string: " + var0); }

    – Viktor

    9. März 2018 um 19:02 Uhr


  • stackoverflow.com/questions/18724750/…

    – Viktor

    9. März 2018 um 22:15 Uhr

  • Der zweite reguläre Ausdruck oben, der Klammern zulässt, hat ein Problem. Es betrachtet eine UUID mit nur einer öffnenden oder schließenden geschweiften Klammer als gültig, z. B.: {77921671-41fa-4f61-83ea-5d60b76a264e

    – Martin Picker

    4. Oktober 2018 um 12:44 Uhr

  • Dies ist weitaus anfälliger für Brüche und weitaus ausführlicher und unnötiger als ein einfacher Versuch/Fang, um die UUID wie in einer anderen Antwort hier zu analysieren.

    – Josch M.

    4. Januar 2019 um 14:10 Uhr

  • Sie könnten die Redundanz der {4}-Längengruppen verdichten, indem Sie sie in eine nicht einfangende Gruppe mit einem {3}-Quantifizierer einpacken. Bsp (^[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12}$)

    – TomPlum

    15. November 2019 um 9:37 Uhr

1047550cookie-checkWie kann man beurteilen, ob eine Zeichenfolge vom Typ UUID ist? [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy