2014-06-24 81 views
-1

我从我的Web服务接收授权字符串,代表Guid(C#)。如何使用Swift将字符串转换为guid?或者,我如何验证结果,事实上,它是一个Guid?快速检查字符串的guid值

var str1:String = "5810744d-49f7-4edc-aefb-ecd1ebf9e59b" 
var str2:String = "Some text" 

我如何定义 - 是字符串包含guid?

+0

向我们显示一些代码? – Shai

回答

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),但会过滤掉常规文本。