iOS開發-OC語言 (三)字符串


字符串

 

知識點

1.NSString 

2.NSMutableString 

3.了解NSMutableStringNSString的繼承關系

了解:

  1.什么是字符編碼

是一套法則,使用該法則能夠對自然語言的字符的一個集合(如字母表或音節表),與其他東西的一個集合(如號碼或電脈      沖)進行配對。即在符號集合與數字系統之間建立對應關系。

字符編碼百科:http://baike.baidu.com/link?url=bFKEidJQmo3JEljFQRbtkEyToRe1_SrqbCgNsv4jKcYGFyTBixJjhTVYegSiozPVpvrR99cQhUoQq_01BnF1L_

  

  2.UTF8編碼:UTF-88-bit Unicode Transformation Format)是一種針對Unicode的可變長度字符編碼,又稱萬國碼。由Ken Thompson1992年創建。現在已經標准化為RFC 3629UTF-816字節編碼UNICODE字符。用在網頁上可以同一頁面顯示中文簡體繁體及其它語言(如英文,日文,韓文)。

 

 

 

 

 

 

========= 不可變字符串(NSString) =========

 

   1.為什么需要NSString對象

答:在OC中創建字符串時,一般不使用C的方法,

因為C將字符串作為字符數組,所以在操作時會有很多不方便的地方,

Cocoa中NSString集成的一些方法,可以很方便的操作字符串。

 

 

  2.OC中定義字符串和C語言定義字符串

    //C字符串常量

        char *cString = "c字符串";

        printf("c string is %s\n",cString);

        //OC字符串常量

 

        NSString *ocString = @"oc字符串";

 

        NSLog(@"oc string is %@",ocString);

 

 

  3.NSLog如何格式化NSString對象

      %@

    

 

 

    4.字符串創建

      (1)定義一個空的不可變字符串(一般用不到):

        NSString *string = [[NSString alloc] init];

      (2)定義一個有值的字符串(一般用不到)

        [NSString stringWithString:@"test"];

        [[NSString alloc] initWithString:<#(NSString *)#>];

 

  

    5.如何格式化一個字符串

     [NSString stringWithFormat:<#(NSString *), ...#>];

 

 

  6.C語言字符串和NSString的轉換

 

  <1>c字符串轉化為NSString

      [NSString stringWithUTF8String:c];

     <2>NSString轉化為C

      [string UTF8String];

 

 

    7.如何從文本文件中讀取字符串

  //第1種:

     /*

         stringWithContentsOfFile:要讀取文件路徑

         encoding:編碼方式

         error:錯誤信息,可以傳nil

         */

//類方法

        s = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];

//對象方法

        [[NSString alloc] initWithContentsOfFile:<#(NSString *)#> encoding:<#(NSStringEncoding)#> error:<#(NSError *__autoreleasing *)#>];

 

2種:

//把路徑的字符串轉化為NSURL對象

      NSURL *filePath = [NSURL fileURLWithPath:path];

        

        string = [NSString stringWithContentsOfURL:filePath encoding:NSUTF8StringEncoding error:nil];

 

 

 

    8.如何把一個字符串寫入到文件中

       /*

         writeToFile:要寫入的文件路徑(file path

         atomically:YES表示原子性,NO表示非原子性。一般是YES(比較安全),當為YES,系統在寫入的過程中會創建一個臨時文件,系統先把數據寫入到臨時文件里面,如果寫入成功,最后賦值到目標文件里面。

         encoding:編碼,一般是UTF8(NSUTF8StringEncoding)

         */

    

        NSError *error;

        //文件不存在會自動創建

        [string writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:&error];

 

 

    9.如何從網絡上讀取字符串

    NSURL *url = [NSURL URLWithString:遠程地址];

        

        string = [NSString stringWithContentsOfURL: url encoding:NSUTF8StringEncoding error:nil];

   

 

 

    10.求字符串長度(一個中文長度為1)

     [string length]

 

 

 

 

 

    11.通過索引獲取相應的字符

     [string characterAtIndex:0]

 

 

  

    12.字符串判斷

      1)判斷兩個字符串內容是否相同

        [s1 isEqualToString:s2]

 

      2)判斷兩個字符串是否是同一個對象

 

        if (s1 == s2)

        {

            NSLog(@"s1和s2是同一個對象");

        }

        else

        {

            NSLog(@"s1和s2不是同一個對象");

        }

   

 

     13.字符串比較

        1)兩個字符串比較(區分大小寫)

        NSComparisonResult result = [s1 compare:s2];

        

        if (result == NSOrderedAscending)

        {

            NSLog(@"s2 > s1");

        }

        else if (result == NSOrderedSame)

        {

            NSLog(@"s1 = s2");

        }

        else

        {

            NSLog(@"s2 < s1");

        }

         

        2)比較兩個字符串(忽略大小寫)

          //忽略大小寫

        result = [s1 caseInsensitiveCompare:s2];

 

 

    14.轉化為基本類型(int,float,bool,double,integer

       //轉化為int

        [num2 intValue];

        //轉化為NSInteger

        [num2 integerValue];

        //轉化為Double

        [num2 doubleValue];

        //float

        [num2 floatValue];

        //long long

        [num2 longLongValue];

        //bool

        [num2 boolValue];

 

    15.把一個字符串轉化為大寫,小寫,各個單詞的首字母大寫

       //轉化為大寫

        NSString *upperString = [s1 uppercaseString];

        NSLog(@"大寫:%@",upperString);

        //轉化為小寫

        NSString *lowString = [s1  lowercaseString];

        NSLog(@"小寫:%@",lowString);

        

        //各個單詞的首字母大寫

        NSString *ss = [s1 capitalizedString];

        NSLog(@"各個單詞的首字母大寫:%@",ss);

     

    16. 替換字符串

        [S stringByReplacingOccurrencesOfString:A  withString:B];//S中所有的A換為B

       [string stringByReplacingOccurrencesOfString:@"l3l" withString:@"s"];

    

 

    17.分割一個字符串,轉化為數組

[string componentsSeparatedByString:@“分隔符];

 

    18.字符串截取

    //從指定索引截取到最后

        NSString *subString = [string substringFromIndex:起始索引];

//從開始截取到指定的索引之前

        subString = [string substringToIndex:終止索引(不包括當前索引)]’

//截取字符串的一部分

                //范圍

        NSRange range = NSMakeRange(2, 3);

       [string substringWithRange:range];

 

 

       

 

    19.字符串拼接

      (1)拼接一個字符串

        [str1 stringByAppendingString:str2]

      (2)拼接一個格式化字符串

       [str1 stringByAppendingFormat:@" %@",str2]

       

 

    20.查找字符串

        //[string rangeOfString:要查找的字符串]

        //只會查找第一次出現的字符串,從前向后查找

        range = [string rangeOfString:@"test"];

        NSLog(@"%ld - %ld",range.location,range.length);

        

        /*

         NSCaseInsensitiveSearch 不區分大小寫

         NSLiteralSearch 區分大小寫

         NSBackwardsSearch 從后向前查找

         */

        range = [string rangeOfString:@"test" options:NSBackwardsSearch];

        NSLog(@"%ld - %ld",range.location,range.length);

 

 

    21.判斷一個字符串是否以某個前綴或者后綴

 //判斷是否以某個字符串前綴開頭

        [string hasPrefix:@"he22"]

//判斷是否以某個字符串前綴結尾

[string hasSuffix:@"ds"];

 

    22.路徑

     1)路徑后面追加一個文件名或者路徑(網絡會用到)

       [path stringByAppendingPathComponent:文件名或者文件夾名字];

 

 

     2)把指定的字符串數組拼接成路徑

      NSMutableArray *array = [NSMutableArray arrayWithObjects:@"Users",@"qianfeng",@"desktop",@"新建文件夾", nil];

        newPath = [NSString pathWithComponents:array];

 

     3)將路徑分割成字符串數組

      NSArray *components = [path pathComponents];

       

 

 

     4)判斷是否是絕對路徑

        BOOL isAbsolutePath = [path isAbsolutePath];

        

  

 

     5)獲取最后一個目錄或者文件名

       //取路徑的最后一部分

        NSString *s = [path lastPathComponent];

 

     6)刪除路徑最后一部分

[path stringByDeletingLastPathComponent];

 

     7)獲取文件后綴

[path pathExtension]        

 

     8)刪除后綴

[path stringByDeletingPathExtension];

       

 

     9)添加后綴

      [path stringByAppendingPathExtension:@"png"];

 

  

 

  .

 

 

 

 

========= 可變字符串(NSMutableString) =========

 

   1.初始化可變字符串(必須初始化)

    NSMutableString *string = [[NSMutableString alloc] init];

    string = [NSMutableString string];

    

 

 

 

   2.初始化帶有字符串的可變字符串

     [NSMutableString stringWithString:@"sss"];

 

 

   3.設置字符串 

     //設置字符串(會覆蓋原來字符串內容)

      [string setString:@"測試"];

 

   4.在指定的位置插入字符串

[string insertString:@“要插入的字符串atIndex:插入字符串的下標];

 

 

   5.追加一個部分字符串(在最后追加)

    [string appendString:@"🐷"];

        //追加格式化字符串

    [string appendFormat:@"dog=%@ cat=%@",@"🐶",@"🐱"];

 

 

   6.刪除字符串一部分

       //要刪除的范圍

        NSRange deleteRange = NSMakeRange(3, 2);

        //刪除指定范圍的字符

        [string deleteCharactersInRange:deleteRange];

     

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM