Esto es en realidad un caso que se adapta perfectamente a las expresiones regulares:
NSString *str = @"00000123";
NSString *cleaned = [str stringByReplacingOccurrencesOfString:@"^0+"
withString:@""
options:NSRegularExpressionSearch
range:NSMakeRange(0, str.length)];
Sólo una línea de código (en un sentido lógico, los saltos de línea añadido para mayor claridad) y no hay límites en la cantidad de caracteres que maneja
Una breve explicación del patrón de expresión regular:
El ^
significa que el patrón debe ser anclado en el principio de la cadena. Necesitamos eso para asegurarnos de que no coincida con ceros legítimos dentro de la secuencia de dígitos.
La parte 0+
significa que debe coincidir con uno o más ceros.
Juntas, coinciden con una secuencia de uno o más ceros al principio de la cadena, luego la reemplaza con una cadena vacía, es decir, elimina los ceros iniciales.
Eres impresionante @adali :)) –
eres bienvenido :) – adali
Hola @adali, pero cuando la longitud de la cadena es> 9, le da un valor diferente. ¿Puedes comprobarlo.Por ejemplo,NSString * str = @ "3103282369"; NSString * clean = [NSString stringWithFormat: @ "% d", [str intValue]]; NSLog (@ "Clean-% @", clean); da 2147483647 como salida. –