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

iOS NSArray 轉字串移除換行與括號的最佳方法:componentsJoinedByString

     編輯:程式設計綜合問答

問題代碼


NSString *myArrayString = [self.selectedStates description]; // 包含 \n、()、空格
NSCharacterSet *charsToTrim = [NSCharacterSet characterSetWithCharactersInString:@"()\n\""];
myArrayString = [myArrayString stringByTrimmingCharactersInSet:charsToTrim];
// 結果仍含換行、空格:@"1, 2, 3, 4, 5, 6"

description 返回調試格式字串(含換行、縮進、括號),不適合業務處理。

標準解法:componentsJoinedByString


// 直接用分隔符連接元素,無多餘字符
NSString *result = [self.selectedStates componentsJoinedByString:@","];
// 結果:@"1,2,3,4,5,6" (假設陣列元素為 @"1", @"2" ...)

進階:元素非字串時的轉換


// 陣列包含 NSNumber、自定義對象等
NSArray *mixedArray = @[@1, @2.5, @"three", @YES];
NSString *result = [mixedArray valueForKey:@"description"].componentsJoinedByString:@",");
// 或更安全:
NSMutableString *builder = [NSMutableString string];
[mixedArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    if (idx > 0) [builder appendString:@","];
    [builder appendString:[obj description]];
}];
NSString *result = builder;

若必須用 description 字串處理(不推薦)


NSString *desc = [array description];
desc = [desc stringByReplacingOccurrencesOfString:@"\n" withString:@""];
desc = [desc stringByReplacingOccurrencesOfString:@" " withString:@""];
desc = [desc stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"()"]];
// 繁瑣且脆弱,極易因格式變化失效

總結

  • **首選 componentsJoinedByString:** —— 語義清晰、高效、無副作用。
  • 避免依賴 description,它是調試輸出,格式不保證穩定。
  • 需自定義分隔符、前後綴時,NSMutableString + enumerateObjectsUsingBlock: 完全可控。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved