4792a11eeb1f826ba1db5adc03162d62200af644
[pithos-ios] / Classes / NSString+Conveniences.m
1 //
2 //  NSString+Conveniences.m
3 //  OpenStack
4 //
5 //  Created by Mike Mayo on 10/9/10.
6 //  The OpenStack project is provided under the Apache 2.0 license.
7 //
8
9 #import "NSString+Conveniences.h"
10
11 @implementation NSString (Conveniences)
12
13 - (BOOL)isURL {
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];
18 }
19
20 - (NSString *)replace:(NSString *)s with:(NSString *)r {
21     if ([r isKindOfClass:[NSString class]]) {
22         return [self stringByReplacingOccurrencesOfString:s withString:r];
23     } else {
24         return [self stringByReplacingOccurrencesOfString:s withString:[r description]];
25     }
26 }
27
28 - (NSString *)replace:(NSString *)s withInt:(NSInteger)i {
29     return [self replace:s with:[NSString stringWithFormat:@"%i", i]];
30 }
31
32 + (NSString *)encodeToPercentEscape:(NSString *)string {
33     return [((NSString *)CFURLCreateStringByAddingPercentEscapes(NULL, 
34                                                                  (CFStringRef)string, 
35                                                                  NULL, 
36                                                                  (CFStringRef)@"!*'();:@&=+$,/?%#[]", 
37                                                                  kCFStringEncodingUTF8)) autorelease];
38 }
39
40 + (NSString *)encodeToPercentEscape:(NSString *)string charactersToEncode:(NSString *)charactersToEncode {
41     return [((NSString *)CFURLCreateStringByAddingPercentEscapes(NULL, 
42                                                                  (CFStringRef)string, 
43                                                                  NULL, 
44                                                                  (CFStringRef)charactersToEncode, 
45                                                                  kCFStringEncodingUTF8)) autorelease];
46 }
47
48
49 + (NSString *)decodeFromPercentEscape:(NSString *)string {
50     return [((NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(NULL, 
51                                                                                  (CFStringRef)string,
52                                                                                  (CFStringRef)@"", 
53                                                                                  kCFStringEncodingUTF8)) autorelease];
54 }
55
56 @end