我从我的Web服务收到一个授权字符串,代表一个Guid(C#)。我如何使用Swift将字符串转换为guid?或者,我如何验证结果,它实际上是一个Guid?
var str1:String = "5810744d-49f7-4edc-aefb-ecd1ebf9e59b"
var str2:String = "Some text"
我如何定义 - 字符串是否包含guid?
答案 0 :(得分:3)
您可以将NSPredicate
与正则表达式一起使用,以查看字符串格式是否正确:
var str1:String = "(5810744d-49f7-4edc-aefb-ecd1ebf9e59b)"
var str2:String = "Some text"
let guidPred = NSPredicate(format: "SELF MATCHES %@", "((\\{|\\()?[0-9a-f]{8}-?([0-9a-f]{4}-?){3}[0-9a-f]{12}(\\}|\\))?)|(\\{(0x[0-9a-f]+,){3}\\{(0x[0-9a-f]+,){7}0x[0-9a-f]+\\}\\})")
// Prints "str1 IS a GUID"
if guidPred.evaluateWithObject(str1) {
println("str1 IS a GUID")
} else {
println("str1 is NOT a GUID")
}
// Prints "str2 is NOT a GUID"
if guidPred.evaluateWithObject(str2) {
println("str2 IS a GUID")
} else {
println("str2 is NOT a GUID")
}
此正则表达式将匹配MSDN上列出的四种格式中的任何一种。为了保持(相对)简单,表达式将匹配一些格式不正确的字符串(例如,如果您要删除一个连字符,而不是所有其他连字符:5810744d49f7-4edc-aefb-ecd1ebf9e59b
),但会过滤掉常规文本。