在Swift中将字符串验证为有效的UUID

Eze*_*lin 15 uuid swift

给定一个提供的String,如何验证StringSwift中的有效UUID?

一个有效的UUID(据我所知)可能是:

33041937-05b2-464a-98ad-3910cbe0d09e
3304193705b2464a98ad3910cbe0d09e
Run Code Online (Sandbox Code Playgroud)

Lan*_*nce 29

你可以用 UUID

var uuid = UUID(uuidString: yourString)
Run Code Online (Sandbox Code Playgroud)

如果yourString不是有效的UUID,则返回nil

注意:这只会验证您提供的第一个案例,而不是第二个案例,但您自己添加短划线是微不足道的.

  • `NSUUID(uuidString:yourString)`和Swift 3 (3认同)

Cod*_*der 6

以下内容针对 Swift 4.0 进行了更新,以确定字符串是否为有效的 UUID。

\n\n
let uuidHyphens = "33041937-05b2-464a-98ad-3910cbe0d09e"\nlet uuidNoHyphens = "3304193705b2464a98ad3910cbe0d09e"\n\nif UUID(uuidString: uuidHyphens) != nil {\n    print("UUID string with hypens is valid") // Will be valid\n} else {\n    print("UUID string with hypens is not valid")\n}\n\n// In this scenario, the UUID will be nil,\nif UUID(uuidString: uuidNoHyphens) != nil {\n    print("UUID string with no hypens is valid")\n} else {\n    print("UUID string with no hypens is not valid") // Will not be valid\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

传入UUID init 的字符串必须包含连字符,否则检查将失败。如果您期望字符串不带连字符,那么您可以利用此处讨论的方法向长度为 32 的字符串添加连字符。

\n\n

Apple 文档中的相关部分:

\n\n
\n

从字符串创建 UUID,例如\n \xe2\x80\x9cE621E1F8-C36C-495A-93FC-0C247A3E6E5F\xe2\x80\x9d。

\n
\n


ide*_*uch 5

我编写了下面的扩展来制作 UUID 字符串

extension String {
  var uuid: String? {
    var string = self
    var index = string.index(string.startIndex, offsetBy: 8)
    for _ in 0..<4 {
      string.insert("-", at: index)
      index = string.index(index, offsetBy: 5)
    }
    // The init below is used to check the validity of the string returned.
    return UUID(uuidString: string)?.uuidString
  }
}
Run Code Online (Sandbox Code Playgroud)