从不带破折号的字符串创建UUID
如何从不带破折号的字符串中创建java.util.UUID?
"5231b533ba17478798a3f2df37de2aD7" => #uuid "5231b533-ba17-4787-98a3-f2df37de2aD7"
回答:
Clojure的带#uuid
标签文字是对的传递java.util.UUID/fromString
。并且,fromString
将其除以“-”并将其转换为两个Long
值。(UUID的格式已标准化为8-4-4-4-12十六进制数字,但“-”实际上仅用于验证和视觉识别。)
直接的解决方案是重新插入“-”并使用java.util.UUID/fromString
。
(defn uuid-from-string [data] (java.util.UUID/fromString
(clojure.string/replace data
#"(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})"
"$1-$2-$3-$4-$5")))
如果您想要没有正则表达式的内容,则可以使用ByteBuffer
和DatatypeConverter
。
(defn uuid-from-string [data] (let [buffer (java.nio.ByteBuffer/wrap
(javax.xml.bind.DatatypeConverter/parseHexBinary data))]
(java.util.UUID. (.getLong buffer) (.getLong buffer))))
以上是 从不带破折号的字符串创建UUID 的全部内容, 来源链接: utcz.com/qa/405430.html