Какао / Цель C: преобразовать числа в строки, используя японские символы Юникода - PullRequest
0 голосов
/ 06 сентября 2010

Преобразование чисел в строки не является проблемой, но созданная строка использует числа ASCII.Я вставляю число в японском предложении.Сам символ правильный, скажем, 3, например, но ширина и расположение должны немного отличаться при наборе текста на японском языке.В результате число выглядит тесно связанным со следующим символом.Есть ли какой-нибудь умный не ручной способ конвертировать 1 в 1, 2 в 2, 3 в 3 и т. Д.?

1 Ответ

0 голосов
/ 06 сентября 2010

Из-за отсутствия каких-либо лучших идей я написал не слишком элегантное решение для категории, которое вручную преобразовывает каждый символ. Если у кого-то есть лучшее решение, пожалуйста, дайте мне знать.

#import "NSNumber+LocalizedNumber.h"

@interface NSNumber()
-(NSString*)convertRepresentation:(unichar)character;
@end

@implementation NSNumber (LocalizedNumber)

-(NSString *)localizedNumber {
    NSString *languageCode = [[NSLocale preferredLanguages] objectAtIndex:0];
    if([languageCode isEqualToString:@"ja"]) {
        NSString *numberString = [self stringValue];
        NSUInteger length = [numberString length];
        NSMutableString *convertedString = [[NSMutableString alloc] initWithCapacity:length];
        for(NSUInteger index = 0; index < length; index++) {
            unichar character = [numberString characterAtIndex:index];
            [convertedString appendString:[self convertRepresentation:character]];
        }
        return [convertedString autorelease];
    }
    return [self stringValue];
}

-(NSString*)convertRepresentation:(unichar)character {
    switch (character) {
        case '1':
            return @"1";
        case '2':
            return @"2";
        case '3':
            return @"3";
        case '4':
            return @"4";
        case '5':
            return @"5";
        case '6':
            return @"6";
        case '7':
            return @"7";
        case '8':
            return @"8";
        case '9':
            return @"9";
        case '0':
            return @"0";
        default:
            return nil;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...