程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> Objective-C基礎筆記(8)Foundation常用類NSString

Objective-C基礎筆記(8)Foundation常用類NSString

編輯:關於C語言

Objective-C基礎筆記(8)Foundation常用類NSString


一、創建字符串的方法

void stringCreate(){
    //方法1
    NSString *str1 = @"A String!";
    //方法2
    NSString *str2 = [[[NSString alloc] init] autorelease];
    str2 = @"A String!";
    [str2 release];
    //方法3
    NSString *str3 = [[NSString alloc] initWithString:@"A String!"];
    [str3 release];
    //釋放內存後 str3指向新內存
    str3 = [NSString stringWithString:@"A String!"];
    //方法4
    NSString *str4 = [[NSString alloc] initWithUTF8String:"A String!"];
    [str4 release];
    //方法5
    NSString *str5 = [[NSString alloc] initWithFormat:@"My age is %i and height is %.2f", 19, 1.55f];
    [str5 release];
    //str5指向新內存
    str5 = [NSString stringWithFormat:@"My age is %i and height is %.2", 19, 1.55f];
}
這裡需要注意的是

1、在指向新內存的時候要確保原來指向的內存釋放。
2、使用靜態方法創建字符串對象後系統會自動釋放內存,不要再次釋放,否則會發生野指針錯誤。

二、讀取文件內容到字符串

    //從文件讀取字符串,並使用UTF-8編碼
    NSError *error;
    NSString *path = @"/user/apple/Desktop/test.txt";
    NSString *str1 = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
    if(error){
        NSLog(@"讀取文件失敗");
    }else{
        NSLog(@"讀取文件成功");
    }
這裡需要注意的是傳入error的時候需要傳入error的地址。

\

如上圖所示,假如我們現在定義了一個變量a (int a = 123) 在內存中的結構如圖,我們要改變變量a的值,就是通過找到該地址然後給該地址所指向的內存賦值。基於這個我們要獲取錯誤信息,就需要傳遞error的地址。

三、讀取URL內容到字符串

    NSString *str2 = [NSString stringWithContentsOfURL:@"file:///user/apple/Desktop/test.txt" encoding:NSUTF8StringEncoding error:&error];
    
    NSString *str3 = [NSString stringWithContentsOfURL:@"http://www.baidu.com" encoding:NSUTF8StringEncoding error:&error];
四、字符串導出

#pragma mark 字符串的導出
void stringExport(){
    NSError *error;
    NSString *str = @"dfdfddfdfdfd";
    NSString *path = @"/user/apple/Desktop/test.txt";
    //YES代表要進行原子性操作,也就是會創建一個中間臨時文件
    //如果文件不存在會自動創建
    [str writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:&error];
    
    if (error) {
        NSLog(@"寫入失敗:%@", [error localizedDescription]);
    } else {
        NSLog(@"導入成功!");
    }
}
需要注意的是

1、如果寫入的文件不存在則會自動創建

2、如果文件夾不存在,或者路徑錯誤則會出錯

3、atomically代表原子性,如果設為YES就會將字符串先全部寫入臨時文件,最後全部寫入目標文件,可以防止文件寫入中斷錯誤。

五、可變字符串

NSString和Java中的String類似,下面介紹一個NSMutableString可變長字符串

#pragma mark 可變字符串的創建
void mutableStringCreate(){
    //預先分配10個字數的存儲空間
    NSMutableString *str = [[NSMutableString alloc] initWithCapacity:10];
    //設置字符串內容
    [str setString:@"1234"];
    //拼接一個字符串
    [str appendString:@"567"];
    
    [str appendFormat:@"age is %i", 27];
    //替換字符串
    NSRange range = [str rangeOfString:@"age"]; //獲取位置
    [str replaceCharactersInRange:range withString:@"number"];
    //插入字符串
    [str insertString:@"abc" atIndex:2]; //12abc34....
    //刪除字符串
    [str deleteCharactersInRange:[range];
     
    [str release];
}
NSMutableString是NSString的子類,所以NSString的非私有方法NSMutableString都可以使用。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved