Форматирование строки в IPhone - PullRequest
0 голосов
/ 21 декабря 2011

Мне нужно добавить пробел после каждых 4 символов в строке. Например, если строка aaaaaaaa, мне нужно отформатировать ее как aaaa aaaa. Я попробовал следующий код, но он не работает для меня.

NSMutableString *currentFormattedString = [[NSMutableString alloc] initWithString:formattedString];

   int count = [formattedString length];

    for (int i = 0; i<count; i++) {
        if ( i %4 == 0) {
            [currentFormattedString insertString:@" " atIndex:i];

        }

    }

Может ли кто-нибудь помочь мне с этим?

Ответы [ 4 ]

1 голос
/ 21 декабря 2011
 NSString *text = [[NSString alloc] initWithString:@"aaaaaaaa"];
    NSString *result = [[NSString alloc] init];
    double count = text.length/4;
    if (count>1) {
    for (int i = 0; i<count; i++) {
        result = [NSString stringWithFormat:@"%@%@ ",result,[text substringWithRange:NSMakeRange(i*4, 4)]];
    }
    result = [NSString stringWithFormat:@"%@%@ ",result,[text substringWithRange:NSMakeRange(((int)count)*4, text.length-((int)count)*4)]];
    }
    else  result = text;
1 голос
/ 21 декабря 2011

Вы не сказали, что не работает с вашим кодом, поэтому трудно точно знать, что ответить.В качестве подсказки - в будущих вопросах не просто говорите «это не работает», но заявляйте, ЧТО не работает и КАК это не работает.Однако ...

NSMutableString *currentFormattedString = [[NSMutableString alloc] initWithString:formattedString];

int count = [formattedString length];


for (int i = 0; i<count; i++) {
    if ( i %4 == 0) {
        [currentFormattedString insertString:@" " atIndex:i];

    }

}

Вы вставляете пробел, но не учитываете это в своем значении индекса.Итак, предположим, что ваша formattedString являетсявставьте пробел, я буду 8. Но 8-я позиция в вашей currentFormattedString не там, где вы думаете, это будет

аааа ааа ааааааааа

В следующий раз это будет еще 4 символа, вдоль которыхвсе еще не там, где вы думаете

аааа ааа аа ааааааа

И т. д.

Вы должны принять во внимание вставленное пространство, которое повлияет на значение смещения.

0 голосов
/ 21 декабря 2011

Ник Булл ответил на причины, по которым ваш метод уже сломался.
ИМХО подходящим решением было бы использовать цикл while и делать приращения цикла самостоятельно.

NSInteger i = 4; // first @" " should be inserted after the 4th (index = 3) char
while (i < count) {
    [currentFormattedString insertString:@" " atIndex:i];
    count ++; // you did insert @" " so the length of the string increased
    i += 5; // you now must skip 5 (" 1234") characters
}
0 голосов
/ 21 декабря 2011

Я нашел следующее, которое форматирует строку в формат телефонного номера, но похоже, что вы могли бы легко изменить ее для поддержки других форматов

Форматирование строки телефонного номера

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...