首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

iOS 字符串處理:使用正則表達式刪除 NSString 開頭的所有 '0'

     編輯:程式設計綜合問答

問題描述

輸入字符串 "001600240321",期望輸出 "1600240321"(刪除開頭連續的 0,保留中間和結尾的 0)。原代碼僅刪除首個 0,無法處理多個前導 0。

最佳解決方案:NSRegularExpression 替換

NSString *stringWithZeroes = @"001600240321";
NSString *cleanedString = [stringWithZeroes stringByReplacingOccurrencesOfString:@"^0+" 
                                                                         withString:@"" 
                                                                            options:NSRegularExpressionSearch 
                                                                              range:NSMakeRange(0, stringWithZeroes.length)];
NSLog(@"Clean String: %@", cleanedString); // 輸出: 1600240321

正則表達式解析

  • ^:匹配字符串開頭。
  • 0+:匹配一個或多個連續的 '0' 字符。
  • NSRegularExpressionSearch:指定使用正則表達式模式匹配。

替代方案:NSScanner 掃描

不使用正則,純 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 選項,可靈活處理各類字符串模式匹配與替換需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved