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

时间:2015-02-11 23:08:40

标签: swift uuid

鉴于提供的String,如何验证String是否是Swift中的有效UUID?

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

33041937-05b2-464a-98ad-3910cbe0d09e
3304193705b2464a98ad3910cbe0d09e

3 个答案:

答案 0 :(得分:23)

您可以使用UUID

var uuid = UUID(uuidString: yourString)

如果yourString不是有效的UUID

,则返回nil

注意:这只会验证你提出的第一个案例,而不是第二个案例,但是你自己添加破折号是微不足道的。

答案 1 :(得分:1)

以下内容针对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的字符串必须包含连字符,否则检查将失败。如果您期望字符串没有超量,那么您可以使用what is discussed here等方法在字符串满足32的长度时添加超文本。

Apple的文档中的相关部分:

  

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

答案 2 :(得分:0)

我写了下面的扩展来制作 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
  }
}