1. 程式人生 > >objective-c 中數據類型之二 字符串(NSString)

objective-c 中數據類型之二 字符串(NSString)

option 大小 edas 字符串長度 seq scan 後者 code form

        // 1. 聲明一個NSString對象,註意對象前要加‘*’。
        NSString *string1;
         
        // 賦值方式1,初始化賦值;
        NSString *string2 = [[NSString alloc] initWithString: @"hello world!"];
         
        // 賦值方式2;
        string1 = @"hello world!";
        string2 = [NSString stringWithString: @"hello world!"];
         
        // 賦值方式3,帶格式賦值,方便有用;
        string1 = [NSString stringWithFormat: @"Hi, I‘m %@,hello to my world!", @"NSString"];
        NSLog(@"%@", string1);
         
        // 2. 控制臺輸入一個字符串給string。
        char *str = NULL;   // 聲明char * 字符串。
        str = alloca(20);   // 給str分配內存;
        scanf("%s", str);   // 控制臺輸入字符串給str;
        // 將str賦給NSString對象string;
        string1 = [NSString stringWithUTF8String: str];
        // 輸出string。
        NSLog(@"string: %@", string1);
         
        // 3. 字符串長度length的使用;
        if ([string1 length] > 5) {
            NSLog(@"字符串長度大於5.");
        } else {
            NSLog(@"字符串長度不大於5.");
        }
         
        // 4.字符串比較是否相等,isEqualToString返回一個布爾型數據YES\NO;
        string1 = @"hello world";
        string2 = @"hello world";
        if ([string1 isEqualToString:string2]) {
            NSLog(@"%@ 等於 %@", string1, string2);
        } else {
            NSLog(@"%@ 不等於 %@", string1, string2);
        }
         
        string1 = @"hello world";
        string2 = @"hello worla";
        if ([string1 isEqualToString:string2]) {
            NSLog(@"%@ 等於 %@", string1, string2);
        } else {
            NSLog(@"%@ 不等於 %@", string1, string2);
        }
         
        // 註:這裏 isEqualToString: 不同於 ==。前者比較是否等價。後者比較指針數值,是否是同一對象;
         
        // 5. 字符串比較大小。
        // 5.1 區分大寫和小寫的比較compare:返回NSComparisonResult(enum)型數據,
        //     小於返回NSOrderedAscending(值為-1),等於返回NSOrderedSame(值為0)。大於返回NSOrderedDescending(值為1);
          
        string1 = @"hello worlD"; // hello worlD 小於 hello world;
        string2 = @"hello world";
         
        string2 = @"hello world"; // hello world 等於 hello world;
        string2 = @"hello world";
         
        string2 = @"hello world"; // hello worle 大於 hello world;
        string2 = @"hello world";
        if ([string1 compare:string2] == NSOrderedSame) {
            NSLog(@"%@ 等於 %@", string1, string2);
        } else if ([string1 compare:string2] == NSOrderedAscending){
            NSLog(@"%@ 小於 %@", string1, string2);
        } else if ([string1 compare:string2] == NSOrderedDescending){
            NSLog(@"%@ 大於 %@", string1, string2);
        }
         
        // 5.2 高級比較compare:options:返回NSComparisonResult(enum)型數據。小於返回-1。等於返回0。大於返回1;
        // options: NSCaseInsensitiveSearch不區分大寫和小寫;NSLiteralSearch區分大寫和小寫。NSNumericSearch比較字符串的字符個數;
        string1 = @"hello worlDa";
        string2 = @"hello world";
        // 不區分大寫和小寫,比較字符串的字符個數;
        if ([string1 compare:string2 options:NSCaseInsensitiveSearch | NSNumericSearch] == NSOrderedSame) {
            NSLog(@"%@ 等於 %@", string1, string2);
        } else if ([string1 compare:string2 options:NSCaseInsensitiveSearch | NSNumericSearch] == NSOrderedAscending){
            NSLog(@"%@ 小於 %@", string1, string2);
        } else if ([string1 compare:string2 options:NSCaseInsensitiveSearch | NSNumericSearch] == NSOrderedDescending){
            NSLog(@"%@ 大於 %@", string1, string2);
        }
         
        // 6. 字符串的連接;
        NSString* string; // 結果字符串,將string1和string2連接起來
        //方法1.
        string1 = @"hello ";
        string2 = @"world";
        string = [[NSString alloc]initWithFormat:@"%@%@", string1, string2]; // 字符之間不加逗號;
        NSLog(@"string1: %@", string1); // 輸出string1;   
        NSLog(@"string2: %@", string2); // 輸出string2;
        NSLog(@"string: %@", string);   // 輸出string;
         
        //方法2.
        // 將string1與string2合並後賦給string;
        string1 = @"game ";
        string2 = @"start";
        NSLog(@"將string1與string2合並後賦給string前:");
        NSLog(@"string1: %@", string1); // 輸出string1。
        NSLog(@"string2: %@", string2); // 輸出string2;
        NSLog(@"string: %@", string); // 輸出string。
        string = [string1 stringByAppendingString:string2];
        NSLog(@"將string1與string2合並後賦給string後:");
        NSLog(@"string1: %@", string1); // 輸出string1。
        NSLog(@"string2: %@", string2); // 輸出string2。
        NSLog(@"string: %@", string); // 輸出string;
         
        //方法3.
        // 將string1, string2加到string的後面;
        string = @"this ";
        string1 = @"game ";
        string2 = @"over";
        NSLog(@"將string1, string2加到string的後面前:");
        NSLog(@"string: %@", string); // 輸出string;
        NSLog(@"string1: %@", string1); // 輸出string1;
        NSLog(@"string2: %@", string2); // 輸出string2;
         
        string = [string stringByAppendingFormat:@"%@%@", string1, string2]; // 字符之間不加逗號;
        NSLog(@"將string1, string2加到string的後面後:");
        NSLog(@"string: %@", string); // 輸出string;
         
        // 7. 字符串的查找。是否以一個字符串開頭hasPrefix:。是否以一個字符串結尾hasSuffix:,是否包括字符串rangeOfString:。
        NSRange range;
        string = @"jingchagushi_chapter.rmvb";
        string1 = @"jing";
        string2 = @"rmvb";
        if ([string hasPrefix:string1]) {
            NSLog(@"%@ 的開頭是%@",string, string1);
        }
        if ([string hasSuffix:string2]) {
            NSLog(@"%@ 的結尾是%@",string, string2);
        }
        range = [string rangeOfString:@"ch"];
        NSLog(@"位置%lu,長度%lu", range.location, range.length);

objective-c 中數據類型之二 字符串(NSString)