NSString通过删除初始零?

Muh*_*.HS 11 cocoa-touch objective-c nsstring

如何从中删除前导零NSString

我有:

NSString *myString;

其值如@"0002060",@"00236"@"21456".

如果它们发生,我想删除任何前导零:

例如,将前一个转换为@"2060",@"236"@"21456".

谢谢.

ada*_*ali 30

对于较小的数字:

NSString *str = @"000123";      
NSString *clean = [NSString stringWithFormat:@"%d", [str intValue]];
Run Code Online (Sandbox Code Playgroud)

对于超过int32范围的数字:

NSString *str = @"100004378121454";     
NSString *clean = [NSString stringWithFormat:@"%d", [str longLongValue]]; 
Run Code Online (Sandbox Code Playgroud)


Mon*_*olo 17

这实际上是一个非常适合正则表达式的情况:

NSString *str = @"00000123";

NSString *cleaned = [str stringByReplacingOccurrencesOfString:@"^0+"              
                                                   withString:@"" 
                                                      options:NSRegularExpressionSearch 
                                                        range:NSMakeRange(0, str.length)];
Run Code Online (Sandbox Code Playgroud)

只有一行代码(在逻辑意义上,为了清晰起见添加了换行符),并且它处理的字符数没有限制.

正则表达式模式的简要说明:

^意味着模式应该锚定到字符串的开头.我们需要确保它不匹配数字序列中的合法零.

0+部分意味着它应匹配一个或多个零.

放在一起,它匹配字符串开头的一个或多个零序列,然后用空字符串替换它 - 即,它删除前导零.