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

iOS 開發:如何截取 NSString 中空格後的字符(保留首字母)

     編輯:程式設計綜合問答

問題場景

在 iOS 開發中,常遇到需要處理人名字符串的需求。例如有一個完整姓名 @"David Campbell",我們想將其截斷為 @"David C" —— 保留名字全拼,姓氏僅保留首字母加點號。

核心解決方案

利用 NSString 的 rangeOfString:options: 方法從後向前查找最後一個空格位置,再配合 substringToIndex: 截取。關鍵在於 NSBackwardsSearch 選項可確保找到最後一個空格,避免中間名干擾。

NSString *str = @"David Campbell";
NSRange range = [str rangeOfString:@" " options:NSBackwardsSearch];
if (range.location != NSNotFound) {
    // +2 包含空格和姓氏首字母
    NSString *result = [str substringToIndex:range.location + 2];
    NSLog(@"%@", result); // 輸出: David C
}

進階考量

  • 多空格處理:若字符串包含多個連續空格,建議先用 stringByReplacingOccurrencesOfString:withString: 規範化
  • 邊界情況:需檢查 range.location != NSNotFound 防止無空格字符串崩潰
  • 國際化:中日韓姓名無空格分隔,此方案僅適用於西方命名習慣

最佳實踐建議

封裝為 NSString 分類方法:

@interface NSString (NameAbbreviation)
- (NSString *)abbreviatedSurname;
@end

@implementation NSString (NameAbbreviation)
- (NSString *)abbreviatedSurname {
    NSRange range = [self rangeOfString:@" " options:NSBackwardsSearch];
    if (range.location == NSNotFound) return self;
    return [self substringToIndex:MIN(range.location + 2, self.length)];
}
@end

使用時只需 [fullName abbreviatedSurname] 即可獲得統一格式結果。

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