2 // NSString+Conveniences.m
5 // Created by Mike Mayo on 10/9/10.
6 // The OpenStack project is provided under the Apache 2.0 license.
9 #import "NSString+Conveniences.h"
11 @implementation NSString (Conveniences)
14 // return [self hasPrefix:@"http://"] || [self hasPrefix:@"https://"];
15 return [[NSPredicate predicateWithFormat:@"SELF MATCHES %@",
16 @"(http|https)://((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+"]
17 evaluateWithObject:self];
20 - (NSString *)replace:(NSString *)s with:(NSString *)r {
21 if ([r isKindOfClass:[NSString class]]) {
22 return [self stringByReplacingOccurrencesOfString:s withString:r];
24 return [self stringByReplacingOccurrencesOfString:s withString:[r description]];
28 - (NSString *)replace:(NSString *)s withInt:(NSInteger)i {
29 return [self replace:s with:[NSString stringWithFormat:@"%i", i]];
32 + (NSString *)encodeToPercentEscape:(NSString *)string {
33 return [((NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,
36 (CFStringRef)@"!*'();:@&=+$,/?%#[]",
37 kCFStringEncodingUTF8)) autorelease];
40 + (NSString *)encodeToPercentEscape:(NSString *)string charactersToEncode:(NSString *)charactersToEncode {
41 return [((NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,
44 (CFStringRef)charactersToEncode,
45 kCFStringEncodingUTF8)) autorelease];
49 + (NSString *)decodeFromPercentEscape:(NSString *)string {
50 return [((NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(NULL,
53 kCFStringEncodingUTF8)) autorelease];