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

iOS NSString 判斷並移除尾部小數點:hasSuffix 與 substringToIndex 正確用法

     編輯:程式設計綜合問答

需求:檢查字符串是否以 . 結尾,若是則移除該小數點。原代碼邏輯反了 (!hasSuffix 才處理),且缺少移除實現。

正確實現

NSString *numStr = @"5."; // 或 @"123.45"
if ([numStr hasSuffix:@"."]) {
    // 截取除最後一個字符外的所有內容
    numStr = [numStr substringToIndex:numStr.length - 1];
    // 結果: @"5" 或 @"123.45"
}
NSLog(@"Result: %@", numStr);

關鍵 API 解析

  • - (BOOL)hasSuffix:(NSString *)aString:高效判斷後綴,內部優化比較長度優先。
  • - (NSString *)substringToIndex:(NSUInteger)anIndex:返回 `[0, anIndex)` 子串,**不包含** anIndex 位置字符。傳入 `length - 1` 即去掉最後一字符。

擴展:通用移除尾部字符工具方法

- (NSString *)stringByRemovingTrailingCharactersInSet:(NSCharacterSet *)charset {
    NSUInteger len = self.length;
    while (len > 0 && [charset characterIsMember:[self characterAtIndex:len - 1]]) {
        len--;
    }
    return [self substringToIndex:len];
}

// 使用
NSString *clean = [numStr stringByRemovingTrailingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@". "]];
// 可同時去除尾部小數點、空格等

常見誤區

  • ❌ 直接修改不可變 NSString — 必須重新賦值 numStr = ...。
  • ❌ 使用 stringByReplacingOccurrencesOfString:@"" withString:@"" — 會移除**所有**小數點,非尾部。
  • ❌ 邏輯判斷取反 (!hasSuffix) — 導致不滿足條件時才執行移除。

字符串處理核心:**不可變性**、**正確邊界條件**、**利用系統優化 API (hasSuffix/prefix/rangeOfString...)**。

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