2016-02-05 56 views
0

我使用下面的方法来编码目标字符串 - C:字符串编码 - 斯威夫特

+(NSString*)urlEncoded:(NSString*)string 
{ return ((NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes (NULL,(CFStringRef)string, NULL,(CFStringRef)@"! '=();@&+$%#",kCFStringEncodingUTF8)));} 

是否有在雨燕2.0这种方法的任何对手?我尝试过使用堆栈中的很多解决方案,但他们都不能解决我的问题。

回答

2

你可能想使用stringByAddingPercentEncodingWithAllowedCharactersNSCharacterSet的URL组分特定的字符集:

let title = "NSURL/NSURLComponents" 
let escapedTitle = title.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet()) 

这些人物背后的想法将是,他们很可能因为他们比任何有限的描述使用更正确设定你有。也就是说,您可以使用与自己生成的设置相同的方法:

let escapeSet = NSCharacterSet(charactersInString: "! '=();@&+$%#") 
let string = "sdfT&*w5e#sto([+peW7)%y9pqf])" 
let escapedString = string.stringByAddingPercentEncodingWithAllowedCharacters(escapeSet.invertedSet) 
// "sdfT%26*w5e%23sto%28[%2BpeW7%29%25y9pqf]%29" 
+0

不工作。我的字符串是“sdfT&* w5e#sto([+ peW7)%y9pqf])”。我想编码这个。 –

+0

@VamshiKrishna:更新! –

+0

它工作。但有一个小小的更新。通过“!'=()[]; @&+ $%#”替换“!'=(); @&+ $%#”。谢谢 –