Подтвердить что ты не робот

Удаление ведущих нулей из строки

У меня есть строка 0023525631, но я хочу, чтобы строка 23525631 - без начальных нулей. Как это сделать?

4b9b3361

Ответ 1

Вы можете преобразовать строку в целое число и целое число в строку, если вы номер.

Или

Объявите указатель на эту строку и установите этот указатель на начало строки, затем выполните итерацию строки и добавьте к этому указателю число нулей в начале строки. Затем у вас есть указатель на строку, которая начинается до нулей, вы должны использовать указатель на строку obitain без нулей, если вы используете строку, вы можете получить строку с нулями.

Или

Вы можете отменить строку и повторить ее с обратной стороны, если вы получите несколько char != '0', вы прекратите итерацию, иначе вы переписываете этот char в null. После этого вы можете отменить строку, чтобы вернуть свое целое число в строку без начальных нулей.

Ответ 2

Используйте выражение Reguler, подобное этому,

 NSString *str [email protected]"000034234247236000049327428900000";
    NSRange range = [str rangeOfString:@"^0*" options:NSRegularExpressionSearch];
    str= [str stringByReplacingCharactersInRange:range withString:@""];
    NSLog(@"str %@",str);

O/P: - str 34234247236000049327428900000

Ответ 3

Это именно то, что делает NSNumberFormatter для (и лучше для него). Зачем изобретать колесо?

Ответ 4

Вы можете использовать это:

NSString *testStr = @"001234056";
testStr = [NSString stringWithFormat:@"%d",[testStr intValue];

Ответ 5

Я предполагаю, что вы только хотите удалить ведущие нули. И.Е. @ "* 00 * 1234 * 0 * 56" становится @ "1234 * 0 * 56", а не @ "123457". Для этого я использовал NSScanner.

// String to strip
NSString *test = @"001234056";

// Skip leading zeros
NSScanner *scanner = [NSScanner scannerWithString:test];
NSCharacterSet *zeros = [NSCharacterSet
                            characterSetWithCharactersInString:@"0"];
[scanner scanCharactersFromSet:zeros intoString:NULL];

// Get the rest of the string and log it
NSString *result = [test substringFromIndex:[scanner scanLocation]];
NSLog(@"%@ reduced to %@", test, result);

Ответ 6

Без регулярного выражения

func trimLeadingZeroes(input: String) -> String {
    var result = ""
    for character in input.characters {
        if result.isEmpty && character == "0" { continue }
        result.append(character)
    }
    return result
}

С regex

func trimLeadingZeroes(input: String) -> String {
    return input.stringByReplacingOccurrencesOfString(
        "^0+(?!$)",
        withString: "",
        options: .RegularExpressionSearch,
        range: Range(start: input.startIndex, end: input.endIndex)
    )
}

Ответ 7

Лучше всего написать функцию, которая может быть использована в любое время.

-(NSString *)trimZero:(NSString*)inputString {

NSScanner *scanner = [NSScanner scannerWithString:inputString];
NSCharacterSet *zeros = [NSCharacterSet
                         characterSetWithCharactersInString:@"0"];
[scanner scanCharactersFromSet:zeros intoString:NULL];

return [inputString substringFromIndex:[scanner scanLocation]];
}

Использование:

NSString *newString = [self trimZero:yourString];

Ответ 8

Здесь реализована реализация на основе C-строк.

char *cstr = [string UTF8String];
while (*cstr == '0')
    ++cstr;
return [NSString stringWithUTF8String:cstr];

Конечно, это также не будет пропускать ведущие пробелы, тогда как NSScanner (по умолчанию) будет.

Ответ 9

Если есть сомнения, итерации

Не нужно так сложно, как другие ответы.

Проще, чем это будет достаточно.

while ([string hasPrefix:@"0"]) {
    string = [string substringFromIndex:1];
}

Примечания:

• Если ваш номер строки похож на 0.12, вы останетесь с .12. Если это нежелательно, просто проверьте, есть ли hasPrefix:@"." и конкатенация с добавлением @ "0".

• Если ваш номер строки просто 0, вам ничего не останется. Если это нежелательно, просто проверьте, isEqualToString:@"" и установите @"0"

• Если скорость действительно важна для вас, вы можете прокручивать символы (сканирование) и break; при достижении ненулевого значения (в индексе n), тогда вы просто substringFromIndex:n