Changeset 16
- Timestamp:
- 01/15/07 3:17:11 PM (2 years ago)
- Files:
-
- trunk/source/CocoaICU.m (modified) (1 diff)
- trunk/source/ICUMatcher.m (modified) (2 diffs)
- trunk/source/ICUPattern.m (modified) (4 diffs)
- trunk/source/NSStringICUAdditions.h (modified) (1 diff)
- trunk/source/NSStringICUAdditions.m (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/source/CocoaICU.m
r6 r16 41 41 42 42 void findAndReplaceFirst(){ 43 NSString *searchString = @"bbdfdbbababababaklsdjfababababab";44 NSString *patternString = @"([ab]+)";43 NSString *searchString = [NSString stringWithUTF8String:"åºåº¢åºåº¢åœåœ€åºåº¢"]; 44 NSString *patternString = [NSString stringWithUTF8String:"([åºåº¢]+)"]; 45 45 ICUPattern *p = [ICUPattern patternWithString:patternString]; 46 46 ICUMatcher *matcher = [ICUMatcher matcherWithPattern:p overString:searchString]; 47 NSString *result = [matcher replaceFirstWithString: @"replacement"];47 NSString *result = [matcher replaceFirstWithString:[NSString stringWithUTF8String:"åŒåŒåŒåŒ"]]; 48 48 NSLog(@"result = %@", result); 49 49 } 50 50 51 51 void findAndReplaceAll() { 52 NSString *searchString = @"bbdfdbbababababaklsdjfababababab";53 NSString *patternString = @"([ab]+)";52 NSString *searchString = [NSString stringWithUTF8String:"âžâââââââžâââââââžââââââ"]; 53 NSString *patternString = [NSString stringWithUTF8String:"(âžââââââ)"]; 54 54 ICUPattern *p = [ICUPattern patternWithString:patternString]; 55 55 ICUMatcher *matcher = [ICUMatcher matcherWithPattern:p overString:searchString]; 56 NSString *result = [matcher replaceAllWithString: @"replacement"];56 NSString *result = [matcher replaceAllWithString:[NSString stringWithUTF8String:"ÅÅÃÃÃÃà à à à À"]]; 57 57 NSLog(@"result = %@", result); 58 58 } trunk/source/ICUMatcher.m
r10 r16 122 122 123 123 groupSize = InitialGroupSize; // reset to default 124 NSString *result = [[[NSString alloc] initWithBytes:dest length:buffSize*sizeof(UChar) encoding: CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingUTF16)] autorelease];124 NSString *result = [[[NSString alloc] initWithBytes:dest length:buffSize*sizeof(UChar) encoding:[NSString nativeUTF16Encoding]] autorelease]; 125 125 free(dest); 126 126 return result; … … 183 183 NSString *result = [[[NSString alloc] initWithBytes:destString 184 184 length:resultLength * sizeof(UChar) 185 encoding: CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingUTF16)] autorelease];185 encoding:[NSString nativeUTF16Encoding]] autorelease]; 186 186 free(destString); 187 187 return result; trunk/source/ICUPattern.m
r14 r16 39 39 -(unsigned)flags; 40 40 -(UChar *)textToSearch; 41 //-(URegularExpression *)re;42 41 -(void)setTextToSearch:(UChar *)utf16String; 43 42 … … 91 90 92 91 -(NSString *)stringToSearch { 93 return [NSString stringWith UTF16String:[self textToSearch]];92 return [NSString stringWithICUString:[self textToSearch]]; 94 93 } 95 94 … … 180 179 } 181 180 182 return [[[NSString alloc] initWithBytes:p length:len encoding: CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingUTF16)] autorelease];181 return [[[NSString alloc] initWithBytes:p length:len encoding:[NSString nativeUTF16Encoding]] autorelease]; 183 182 } 184 183 … … 227 226 NSAssert(i < destFieldsCapacity, @"Unexpected number of components found in split."); 228 227 UChar *offsetStart = destFields[i]; 229 [results addObject:[NSString stringWith UTF16String:offsetStart]];228 [results addObject:[NSString stringWithICUString:offsetStart]]; 230 229 } 231 230 isDone = YES; trunk/source/NSStringICUAdditions.h
r6 r16 12 12 @interface NSString (NSStringICUAdditions) 13 13 14 +(NSString *)stringWithUTF16String:(void *)utf16EncodedString; 14 +(NSStringEncoding)nativeUTF16Encoding; 15 16 +(NSString *)stringWithICUString:(void *)utf16EncodedString; 15 17 -(void *)UTF16String; 16 18 trunk/source/NSStringICUAdditions.m
r14 r16 24 24 25 25 @interface NSString (NSStringICUPrivateAdditions) 26 26 27 @end 27 28 … … 58 59 } 59 60 60 +(NSString *)stringWith UTF16String:(void *)utf16EncodedString {61 +(NSString *)stringWithICUString:(void *)utf16EncodedString { 61 62 return [[[NSString alloc] initWithBytes:utf16EncodedString 62 63 length:u_strlen(utf16EncodedString)*sizeof(UChar) 63 encoding:CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingUTF16)] autorelease]; 64 encoding:[self nativeUTF16Encoding]] autorelease]; 65 } 66 67 +(NSStringEncoding)nativeUTF16Encoding { 68 CFStringEncoding stringEncoding; 69 #if __BIG_ENDIAN__ 70 stringEncoding = kCFStringEncodingUTF16BE; 71 #elif __LITTLE_ENDIAN__ 72 stringEncoding = kCFStringEncodingUTF16LE; 73 #endif 74 75 return CFStringConvertEncodingToNSStringEncoding(stringEncoding); 64 76 } 65 77 66 78 -(void *)UTF16String { 67 UChar *ret = (UChar *)[self cStringUsingEncoding:CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingUTF16)]; 79 UChar *ret = (UChar *)[self cStringUsingEncoding:[NSString nativeUTF16Encoding]]; 80 68 81 // for some reason, the null-terminator doesn't always show up at the right place and this 69 82 // causes extra characters to be created in the unicode string. We remove them here by force.