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

35

给定一个 String,我该如何验证这个 String 是否为 Swift 中有效的 UUID?

有效的 UUID(据我所知)应该是:

33041937-05b2-464a-98ad-3910cbe0d09e
3304193705b2464a98ad3910cbe0d09e
3个回答

79

你可以使用UUID

var uuid = UUID(uuidString: yourString)

如果yourString不是一个有效的 UUID,则会返回 nil。

注意:这只验证了您提出的第一种情况,而没有验证第二种情况,但自己添加破折号很容易。


3
Swift 3 中的 NSUUID(uuidString: yourString) - Chris Prince
Swift 4 中的 UUID(uuidString: yourString) - Ezekiel
有没有一种方法可以检查UUID的版本? - tara tandel

6
以下内容已更新为适用于 Swift 4.0,以确定一个字符串是否是有效的 UUID。
let uuidHyphens = "33041937-05b2-464a-98ad-3910cbe0d09e"
let uuidNoHyphens = "3304193705b2464a98ad3910cbe0d09e"

if UUID(uuidString: uuidHyphens) != nil {
    print("UUID string with hypens is valid") // Will be valid
} else {
    print("UUID string with hypens is not valid")
}

// In this scenario, the UUID will be nil,
if UUID(uuidString: uuidNoHyphens) != nil {
    print("UUID string with no hypens is valid")
} else {
    print("UUID string with no hypens is not valid") // Will not be valid
}
UUID init接收的字符串必须包含连字符,否则检查将失败。如果您期望没有连字符的字符串,则可以使用此处讨论的方法来添加连字符,如果该字符串满足32个字符的长度要求。
苹果文档中相关部分如下:

从字符串(例如“E621E1F8-C36C-495A-93FC-0C247A3E6E5F”)创建UUID。


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
  }
}

var string = self.replacingOccurrences(of: "-", with: ""); // 因为其他格式可能会将“-”放在其他位置(如8-4-8-12而不是8-4-4-4-12)。 - rip...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接