需求:檢查字符串是否以 . 結尾,若是則移除該小數點。原代碼邏輯反了 (!hasSuffix 才處理),且缺少移除實現。
NSString *numStr = @"5."; // 或 @"123.45"
if ([numStr hasSuffix:@"."]) {
// 截取除最後一個字符外的所有內容
numStr = [numStr substringToIndex:numStr.length - 1];
// 結果: @"5" 或 @"123.45"
}
NSLog(@"Result: %@", numStr);
- (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...)**。