Statistics
| Branch: | Tag: | Revision:

root / Classes / NSString+Conveniences.m @ 45f2fce6

History | View | Annotate | Download (2.2 kB)

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