Как удалить начальные 0 в тексте uitextfield в iphone SDK

Фрагмент кода:

    NSString *tempStr = self.consumerNumber.text;        

    if ([tempStr hasPrefix:@"0"] && [tempStr length] > 1) {
        tempStr = [tempStr substringFromIndex:1];

        [self.consumerNumbers addObject:tempStr];>           
    }

Я попробовал эти вещи и убрал только один ноль. как убрать больше одного нуля

Выход:001600240321

Ожидаемый результат:1600240321

Любая помощь действительно ценится

Заранее спасибо!!!!!

5 ответов

Решение

Попробуйте использовать это

NSString *stringWithZeroes = @"001600240321";

NSString *cleanedString = [stringWithZeroes stringByReplacingOccurrencesOfString:@"^0+" withString:@"" options:NSRegularExpressionSearch range:NSMakeRange(0, stringWithZeroes.length)];

 NSLog(@"Clean String %@",cleanedString);

Чистая строка 1600240321

Преобразовать строку в значение int и переназначить это значение в строку,

NSString *cleanString = [NSString stringWithFormat:@"%d", [string intValue]];

o/p:-1600240321

Вы можете добавить рекурсивную функцию, которая вызывается до тех пор, пока строка не начнется с чего-то другого, кроме 0:

 -(NSString*)removeZerosFromString:(NSString *)anyString
{
    if ([anyString hasPrefix:@"0"] && [anyString length] > 1)
    {
        return [self removeZerosFromString:[anyString substringFromIndex:1]];
    }
    else
        return anyString;
}

так что вы просто позвоните в вашем случае:

NSString *tempStr = [self removeZerosFromString:@"000903123981000"];
NSString *str = @"001600240321";
NSString *newStr = [@([str integerValue]) stringValue];

Если NSString содержит только цифры. Другой мудрый использовать это:

-(NSString *)stringByRemovingStartingZeros:(NSString *)string
{
    NSString *newString = string;
    NSInteger count = 0;

    for(int i=0; i<[string length]; i++)
    {
        if([[NSString stringWithFormat:@"%c",[string characterAtIndex:i]] isEqualToString:@"0"])
        {
            newString = [newString stringByReplacingCharactersInRange:NSMakeRange(i-count, 1) withString:@""];
            count++;
        }
        else
        {
            break;
        }
    }
    return newString;
}

Просто назовите этот метод: -

NSString *stringWithZeroes = @"0000000016909tthghfghf";
NSLog(@"%@", [self stringByRemovingStartingZeros:stringWithZeroes]);

OutPut: 16909tthghfghf

Попробуйте метод `stringByReplacingOccursionsOfString´ следующим образом:

NSString *new = [old stringByReplacingOccurrencesOfString: @"0" withString:@""];

Извините: это не поможет вам из-за большего "0" в средней части вашей строки!

Другие вопросы по тегам