[学习笔记]NSString andNSMutableString

温故而知新

巩固和学习NSString 和NSMutableString.

1. NSString

//

//  AppDelegate.m

//  HelloWorld

//

//  Created by lengxuan on 14-4-10.

//  Copyright (c) 2014年 lengxuan. All rights reserved.

//



#import "AppDelegate.h"

#import "Person.h"



@implementation AppDelegate



- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    

    // Override point for customization after application launch.

    self.window.backgroundColor = [UIColor whiteColor];

    [self.window makeKeyAndVisible];

    

    

    // - - - - 创建一个字符串

    // 创建在常量区

    NSString *string1 = @"这是一个字符串常量";

    // 创建在堆区

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

    // 创建在常量区

    NSString *string3 = [NSString string];

    // 快速创建一个格式化的字符串, 创建在堆区

    int number = 2;

    NSString *string4 = [[NSString alloc] initWithFormat:@"%d",number];

    

    // 比较字符串

    NSString *string5 = [[NSString alloc] initWithFormat:@"test"];

    NSString *string6 = [[NSString alloc] initWithFormat:@"test"];

    NSString *string7 = @"test";

    NSString *string8 = @"test";

    

    // - - - - 测试字符串内容是否相等

    if([string5 isEqualToString:string6]){

        NSLog(@"string5 isEqualTo string6");

    }

    if(string5 == string6){

        NSLog(@"string5 == string6");

    }else{

        NSLog(@"string5 != string6");

    }

    // 创建在堆区,内容相等但是指针不相等

    // Result : string5 isEqualTo string6

    // Result : string5 != string6

    

    if([string7 isEqualToString:string8]){

        NSLog(@"string7 isEqualTo string8");

    }

    if(string7 == string8){

        NSLog(@"string7 == string8");

    }else{

        NSLog(@"string7 != string8");

    }

    // 创建在常量区,内容相等且指针相等

    // Result : string7 isEqualTo string8

    // Result : string7 == string8

    

    // -- - - 比较字符串的大小

    NSString *string9 = @"a";

    NSString *string10 = @"b";

    NSLog(@"string9 caseInsensitiveCompare:string10 : %d",[string9 caseInsensitiveCompare:string10]);

    // Result: string9 caseInsensitiveCompare:string10 : -1

    // -1表示升序,即前者小于后者。0表示相等。1表示降序。 字符串的升降序是根据ASCII来排序的。

    

    // -- - - 求字符串的长度

    NSString *string11 = @"string length";

    [string11 length];



    // - - - - 改变字符串大小写

    NSString *string12 = @"hello, world!";

    [string12 uppercaseString];     //全部大写

    [string12 lowercaseString];     //全部小写

    [string12 capitalizedString];   //单词首字母大写,其他字母小写

    

    // - - - - 将字符串转换成基本数据类型

    NSString *string13 = @"3.14";           //字符串中含有非数字字符,则只会取到非数字字符左方的数字。比如:“3.1a4” : 3.10000

    NSLog(@"%d", [string13 boolValue]);     //转换成BOOL类型, Result : 1  等于0的时候结果为0,其余为1

    NSLog(@"%f", [string13 floatValue]);    //转换成浮点型, Result : 3.1400

    NSLog(@"%f", [string13 doubleValue]);   //转换成双精度类型, Result : 3.1400

    NSLog(@"%d", [string13 intValue]);      //转换成整型, Result : 3

    

    // - - - - 将字符串分割成数组

    NSString *string14 = @"ab,cd,ef,gh";

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

    NSLog(@"array componentsSeparatedByString: %@", array);

    

    // - - - - 截取字符串

    NSString *string15 = @"abcdefgh";

    NSLog(@"string15 subStringToIndex:2 is %@", [string15 substringToIndex:2]);     //从开头一直截取到指定下标,不包含该下标。 Result : ab

    NSLog(@"string15 subStringFromIndex:2 is %@", [string15 substringFromIndex:2]); //从指定下标截取到末尾,包含该下标。 Result : cdefgh

    

    // - - - - 根据范围来截取字符串

    NSString *string16 = @"abcdefgh";

    NSLog(@"string16 location:2 length:3 is %@",[string16 substringWithRange:NSMakeRange(2, 3)]);   //从指定下标截取指定长度的字符串。 Result : cde

    

    // - - - - 拼接字符串

    NSString *string17 = @"abc";

    NSString *string18 = @"def";

    NSString *stringAppend1 = [[NSString alloc] initWithFormat:@"%@%@", string17, string18];

    NSString *stringAppend2 = [string17 stringByAppendingFormat:@"%@", string18];

    NSString *stringAppend3 = [string17 stringByAppendingString:string18];

    

    

    // - - - - 查找字符串里的字符串位置

    NSString *string19 = @"zcaadasdastarget=_lengxuanfeiadadas";

    NSRange range = [string19 rangeOfString:@"target=_lengxuanfei"];

    if(range.location != NSNotFound){

        NSLog(@"find target_lengxuanfei, location : %u, length : %u", range.location, range.length);

    }

    //Result : find target_lengxuanfei, location : 10, length : 19

}

 

  2. NSString

  NSMutable是NSString的子类,继承上述NSString的方法和属性。

      但是不同点是;NSString在内存中的大小的地址是不变的,重新复制时,其实是开辟另外一块内存地址分配给NSString。是不可变的。

     NSMutableString可以在原先分配的内存的基础上通过增减内存的方式来改变自己。是可变的。                   

  // 插入字符串

    NSMutableString *mutableString1 = [[NSMutableString alloc] initWithString:@"abc"];

    [mutableString1 insertString:@"defg" atIndex:3];                //直接在当前字符串的指定下标处插入字符。

    NSLog(@"mutableString1 insert result: %@", mutableString1);     //Result : abcdefg

    // 删除字符串

    [mutableString1 deleteCharactersInRange:NSMakeRange(3, 4)];     //直接在当前字符串中删除指定范围内的字符

    NSLog(@"mutableString1 delete(3,4) result: %@", mutableString1);//Result : abc

    //替换字符串

    [mutableString1 replaceCharactersInRange:NSMakeRange(0, 3) withString:@"defg"]; //在当前字符串内替换掉指定范围内的字符串

    NSLog(@"mutableString1 replace(3,4) result: %@", mutableString1);               //Result : defg

 

 

 

你可能感兴趣的:(NSString)