forked from appium/WebDriverAgent
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathNSString+FBXMLSafeString.m
More file actions
30 lines (26 loc) · 1.12 KB
/
NSString+FBXMLSafeString.m
File metadata and controls
30 lines (26 loc) · 1.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/**
* Copyright (c) 2015-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree.
*/
#import "NSString+FBXMLSafeString.h"
@implementation NSString (FBXMLSafeString)
- (NSString *)fb_xmlSafeStringWithReplacement:(NSString *)replacement
{
static NSMutableCharacterSet *invalidSet;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
// Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
invalidSet = [NSMutableCharacterSet characterSetWithRange:NSMakeRange(0x9, 1)];
[invalidSet addCharactersInRange:NSMakeRange(0xA, 1)];
[invalidSet addCharactersInRange:NSMakeRange(0xD, 1)];
[invalidSet addCharactersInRange:NSMakeRange(0x20, 0xD7FF - 0x20 + 1)];
[invalidSet addCharactersInRange:NSMakeRange(0xE000, 0xFFFD - 0xE000 + 1)];
[invalidSet addCharactersInRange:NSMakeRange(0x10000, 0x10FFFF - 0x10000 + 1)];
[invalidSet invert];
});
return [[self componentsSeparatedByCharactersInSet:invalidSet] componentsJoinedByString:replacement];
}
@end