輸入字符串 "001600240321",期望輸出 "1600240321"(刪除開頭連續的 0,保留中間和結尾的 0)。原代碼僅刪除首個 0,無法處理多個前導 0。
NSString *stringWithZeroes = @"001600240321";
NSString *cleanedString = [stringWithZeroes stringByReplacingOccurrencesOfString:@"^0+"
withString:@""
options:NSRegularExpressionSearch
range:NSMakeRange(0, stringWithZeroes.length)];
NSLog(@"Clean String: %@", cleanedString); // 輸出: 1600240321
^:匹配字符串開頭。0+:匹配一個或多個連續的 '0' 字符。NSRegularExpressionSearch:指定使用正則表達式模式匹配。不使用正則,純 Foundation API 實現:
NSString *stringWithZeroes = @"001600240321";
NSScanner *scanner = [NSScanner scannerWithString:stringWithZeroes];
NSString *zeros = nil;
[scanner scanCharactersFromSet:[NSCharacterSet characterSetWithCharactersInString:@"0"] intoString:&zeros];
NSString *cleanedString = [stringWithZeroes substringFromIndex:zeros.length];
// cleanedString = "1600240321"
- (NSString *)trimLeadingZeros:(NSString *)input {
if (!input || input.length == 0) return input;
// 全是 0 的情況,如 "0000" -> "0" 或 ""
NSRange nonZeroRange = [input rangeOfString:@"[^0]" options:NSRegularExpressionSearch];
if (nonZeroRange.location == NSNotFound) {
return @"0"; // 或返回 @"" 視業務而定
}
// 正則替換
return [input stringByReplacingOccurrencesOfString:@"^0+"
withString:@""
options:NSRegularExpressionSearch
range:NSMakeRange(0, input.length)];
}
NSRegularExpression 對象複用。NSScanner 或手動循環檢查字符性能更優。掌握 NSRegularExpressionSearch 選項,可靈活處理各類字符串模式匹配與替換需求。