iOS不可變字串的所有操作

來源:互聯網
上載者:User

標籤:

可以直接複製代碼即可運行看看結果,方便理解

 

//NSString

//OC字串不能用printf輸出

//但是遺憾的是OC沒有一個從終端讀取資料的方式,需要使用scanf讀取C字串然後轉換成OC的字串

    

#pragma mark 字元初始化

//建立一個不可變字串str1 值是常量字串

//列印字串用%@來列印

//%@還可以列印對象

 NSString * str1 = @"常量字串";

    NSLog(@"%@",str1);

 //用字串建立字串

NSString * str2 = [[NSString alloc]initWithString:str1];

    NSLog(@"%@",str2);

  //用字串的格式化來初始化建立一個字串

//API

NSString * str3 = [[NSString alloc]initWithFormat:@"%@%d%f",@"abc",123,12.3];

    NSLog(@"%@",str3);

//用字串的類方法建立一個格式化字串

NSString * str4 = [NSString stringWithFormat:@"%@%d",@"def",456];

    NSLog(@"%@",str4);

    

#pragma mark 將C語言字串轉換成OC字串

    //OC中只要遇到字串編碼的問題均為NSUTF8StringEncoding

    //萬國碼unicode

    

NSString * str5 = [[NSString alloc]initWithCString:"ABC" encoding:NSUTF8StringEncoding];

    NSLog(@"%@",str5);

    char * p = "abc";

NSString  * str5_1 = [[NSString alloc]initWithUTF8String:p];

    NSLog(@"%@",str5_1);

//類方法轉換C字串

NSString * str5_2 = [NSString stringWithCString:p encoding:NSUTF8StringEncoding];

NSString * str5_3 = [NSString stringWithUTF8String:p];

    NSLog(@"%@ %@",str5_2, str5_3);

 

#pragma mark 字串的比較

//判斷字串中不能是用 == 判斷

 

//在設計NSString時,內部應用了一種最佳化的思想, 享元設計思想

//在設計字串的時候,會有一個緩衝池,只要緩衝池中有當前字串,那麼就會返回當前字串的地址,不會再去重複建立,因為大量的建立字串會消耗記憶體,所以提過了這種方式,當我們是用StringWithFormat的時候回重新建立一個新的字串,所以不能用 == 號進行判斷

//在判斷字串中 == 判斷的是字串的指標地址是否相等,存在一定判斷錯誤的風險.

//在實際開發中不能是用== 而是使用專門判斷字串想的方法 isEqualToString

 NSString * str6 = @"ab";

 NSString * str6_1 = @"你好";

//接收傳回值

//BOOL isOK = [str6 isEqualToString:str6_1];

    if([str6 isEqualToString:str6_1]){

        NSLog(@"%@ == %@",str6,str6_1);

    }else{

        NSLog(@"%@ != %@",str6,str6_1);

    }

 

//擷取字串的長度

//在NSString中 任何字母,數字,中文字元的長度都是1

NSLog(@"%@的長度是%ld",str6,[str6 length]);

    //@"abcde";

    //字串的位置是從0開始計數的

    //一個漢字佔2個位元組

    NSString * str7 = @"xcode";

    //擷取單個字元

    //unichar 是兩個位元組的 char

    //字串的位置是從0開始計數的

   unichar newChar = [str7 characterAtIndex:4];

  NSLog(@"newChar = %c",newChar);

   //NSString中有漢字 "%C"

    unichar hanzi = [str6_1 characterAtIndex:0];

    NSLog(@"hanzi = %C",hanzi);

 

    //比較兩個字串的大小

    NSString * str8 = @"yang chang";

    NSString * str8_1 = @"B duan";

NSComparisonResult result =[str8 compare:str8_1];

    if (result == NSOrderedSame) {

        NSLog(@"%@ = %@",str8 ,str8_1);

        //升序 前者小 後者大

    }else if (result == NSOrderedAscending){

        NSLog(@"%@ < %@",str8,str8_1);

        //降序 前者大 後者小

    }else if(result == NSOrderedDescending){

        NSLog(@"%@ > %@",str8,str8_1);

    }

#pragma mark 字串的拼接

    NSString * str9 = @"北京北京";

    NSString * str9_1 = @"我最帥";

    //str9_1拼接到str9的後面

    NSString * str9_2 =  [str9 stringByAppendingString: str9_1];

    NSLog(@"%@",str9_2);

    //格式化拼接 在初始化字串的同時進行拼接

    str9_2 = [str9 stringByAppendingFormat:@"%@%d%f",str9_1,520,520.0];

    NSLog(@"%@",str9_2);

 

    //如何遍曆字串中每一個字元

    NSString * str10 = @"abcdefgh";

    for(int i = 0; i<[str10 length];i++){

       char c = [str10 characterAtIndex:i];

        NSLog(@"%d = %c ",i,c);

    }

 

#pragma mark 字串的尋找

NSString * str11 = @"你好北京123";

    //在當前字串str11中尋找123這個字串,將他的位置和長度返回

NSRange range = [str11 rangeOfString:@"123"];

NSLog(@"loc = %lu , len = %lu",range.location,range.length);

    /**

     typedef struct _NSRange {

     NSUInteger location;//這個是位置不是長度!!!!!

     NSUInteger length;//這個是長度不是位置!!!

     } NSRange;

 

     */

    //判斷當前字串是否存在?

    if(range.location != NSNotFound){

        NSLog(@"123在%@中位置是%lu",str11,range.location);

    }else{

        NSLog(@"123不再字串");

    }

    

    if(range.length != 0){

        NSLog(@"123在%@中長度是%lu",str11,range.length);

    }else{

        NSLog(@"不在");

    }

    

  

 

#pragma mark 字串的截取

  NSString * str12 = @"北京歡迎您,iOS入門還是比較容易的ios";

//是從字串str12中截取出一個子串(從原串第0個字元開始截取到傳入得[值-1]的位置)

    NSString * str12_1 = [str12 substringToIndex:5];

    NSLog(@"str12_1 = %@",str12_1);

    //字串str12中截取指定位置6到字串的結尾

    NSString * str12_2 = [str12 substringFromIndex:6];

    NSLog(@"str12_2 = %@", str12_2);

    //通過已知的範圍range在原字串中尋找子串

    //第一個是位置

    //第二個是長度

    NSRange range2 = {2,4};

    NSLog(@"%@",[str12 substringWithRange:range2]);

    //將原串str12指定範圍內的字元用@"努力學習"替換

    NSString * str12_3 = [str12 stringByReplacingCharactersInRange: NSMakeRange(0, 9) withString:@"努力學習"];

    NSLog(@"str12_3 = %@",str12_3);

 

#pragma mark 判斷首碼和尾碼

    

   NSString * str13 = @"http://www.baidu.com";

    //檢查某個字串是否已指定的字串開始(首碼)

    if([str13 hasPrefix:@"http"]){

        NSLog(@"是");

    }else{

        NSLog(@"不是");

    }

     //檢查尾碼

    if([str13 hasSuffix:@"com"]){

        NSLog(@"是");

    }else{

        NSLog(@"不是");

    }

#pragma mark 字串的轉換

    NSString * str14 = @"abc";

    //將str14轉換成大寫

    str14 = [str14 uppercaseString];

    NSLog(@"%@",str14);

    //將str14轉換成小寫

    str14 = [str14 lowercaseString];

    NSLog(@"%@",str14);

    //將基本類型轉換型字串

//    stringWithFormat

//    initWithFormat

    //將字串轉換成基礎資料型別 (Elementary Data Type)

    NSString * str14_1 = @"1";

    int a = [str14_1 intValue];

    //floatValue

    //doubleValue

    NSString * str14_2 = @"YES";

    BOOL isOK = [str14_2 boolValue];

    //boolValue

    NSLog(@"%d",a);

    //@"1"

#pragma mark 字串的拆分

NSString * str15 = @"a,b,c,d";

 //用指定的分隔字元將字串才分成數組

 //is+-n*/io=pp

  NSArray * array =  [str15 componentsSeparatedByString:@","];

    NSLog(@"%@",array);

//    for (int i= 0; i<[array count];i++) {

//        NSLog(@"%@",[array objectAtIndex:i]);

//    }

 

#pragma mark 從指定檔案讀取字串

    //將檔案的內容讀入到字串中

    //第一個參數是檔案的路徑

    //第二個字元編碼

    //第三個錯誤資訊

NSString * str16 = [NSString stringWithContentsOfFile:@"/Users/hhh/Desktop/github.txt" encoding:NSUTF8StringEncoding error:nil];

    NSLog(@"str16 = %@",str16);

    //從網上讀取檔案內容到字串中

    //第一個 網址

    //第二個 字元編碼

    //第三個 錯誤資訊

    NSString * str17 = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://10.0.178.5/resource/github.txt"]encoding:NSUTF8StringEncoding error:nil];

    NSLog(@"str17 = %@",str17);

   

    //寫入檔案

    //第一個是目標檔案路徑

    //第二個是否寫入緩衝(原子)

    //第三個編碼

    //第四個錯誤資訊

    //如果沒有檔案,那麼就會建立出一個新的檔案,如果原檔案已經存在,那麼會覆蓋原檔案

    [str12 writeToFile:@"/Users/hhh/Desktop/aa.txt"  atomically:YES encoding:NSUTF8StringEncoding error:nil];

iOS不可變字串的所有操作

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.