检查NSString是否被编码
如何检测已经编码的NSString
。
我正在编码我的string,如下所示。 编码之前,我只是想validation天气这[product url]
已经编码或不。
NSString *encodedUrlString=[[product url] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
你可以尝试解码string,看看原来的string和解码后的string是否相同。 如果它们是相同的,那么它还没有被编码。
NSString *original = product.url; NSString *decoded = [original stringByReplacingPercentEscapesUsingEncoding:NSUTF8Encoding]; if ([original isEqualToString:decoded]) { // The URL was not encoded yet NSString *encodedUrlString=[[product url] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; } else { // The URL was already encoded }
顺便说一句 – 这些方法从iOS 9开始不推荐使用,所以如果你的应用程序的部署目标是iOS 9.0或更高版本,你应该使用新的方法。
对于iOS 9或更高版本,您应该使用:
NSString *original = product.url; NSString *decoded = [original stringByRemovingPercentEncoding]; if ([original isEqualToString:decoded]) { // The URL was not encoded yet NSString *encodedUrlString=[[product url] stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet alphanumericCharacterSet]]; } else { // The URL was already encoded }