NSString的使用

1.字面量:一般是固定不变的用双引号引起来,双引号中的内容可以自己进行任意的定义

在OC中一般通过str.length来获取指定的下标的字符内容.

注意在OC中如果想要打印汉子只要用%加上大写的C就行,%c则是用来打印其他字符.

当程序出现错误的时候,在下方的执行框中找到reason开始查找问题,但是一旦数组越界程序会立刻崩溃,所以数组要严谨不越界

用便利构造器和初始化方法创建字符串对象是可以,也能正常使用,但是系统还是倾向于用字面量的方式来完成对象的创建


2.substring 截取字符串

          substringFromIndex从那一个下标开始截取一直到最后,包括下标的位置

    substringFromIndex从哪开始截取,到最后,包括下标位置

    NSString *str = @"nihao, wodemingzijiaoliushanshan";

    NSLog(@"%@", [str substringFromIndex:5]);

reason:2015-07-20 17:43:39.077 OC05_NSString[1827:153292] , wodemingzijiaoliushanshan


    substringToIndex从头开始到哪结束,包括下标

    NSLog(@"%@", [str substringToIndex:10]);

reason:2015-07-20 17:43:39.078 OC05_NSString[1827:153292] nihao, wod


    NSRange 是一个结构体,提供了两个成员变量,一个是location起始位置,还有一个是长度即截取的长度

    NSRange range = {3, 7};

    NSLog(@"%@", [str substringWithRange:range]);

reason:2015-07-20 17:43:39.078 OC05_NSString[1827:153292] ao, wod


     NSMakeRange和NSRange的使用方法是一样的,只是表达的形式不同

    NSLog(@"%@", [str substringWithRange:NSMakeRange(4, 8)]); 

reason:2015-07-20 17:43:39.078 OC05_NSString[1827:153292] o, wodem


3.判断两个字符串内容是否相同

        使用isEqualToString比较的是字符串里面的内容,而使用if(str = str1){};比较的则是字符串的地址是否相同.并且isEqualToString返回的是一个BOOL值,如果相同返回1不同返回0.

    NSString *str1 = @"杨林";

    NSString *str2 = @"杨林";

    NSLog(@"%d", [str1 isEqualToString:str2]); 

reason:2015-07-20 17:50:45.131 OC05_NSString[1836:155572] 1


4.判断是否有前后缀

     hasPreFix和hasSuffix的返回值类型相同都是BOOL型,前者判断是否有前缀,后者判断是否有后缀,前后缀可以自己进行定义如下:

    NSString *str = @"liushanshan";

    NSString *p = @"li";

    NSString *p2 = @"an";

    NSLog(@"%d", [str hasPrefix:p]);

    NSLog(@"%d", [str hasSuffix:p2]);

reason:2015-07-20 17:52:49.148 OC05_NSString[1852:156337] 1

reason:2015-07-20 17:52:49.149 OC05_NSString[1852:156337] 1


5.把字符串->基本数据类型


    NSString *strNum = @"1234p5";

    NSInteger num = [strNum integerValue];

    NSLog(@"%ld", num);

    integerValue把字符串转换为基本的整形数据类型,当遇到第一个非整形数字时结束

reason:2015-07-20 17:55:19.547 OC05_NSString[1860:157191] 1234

    stringWithFormat: 方法可以把任意类型转换成字符串类型,可以进行拼接,即将不同类型的字符串放在一起

    CGFloat g = 3.14;

    NSInteger a = 100;

    NSString *str = [NSString stringWithFormat:@"%ld, %g, %@", a, g, @"刘珊珊"];

    NSLog(@"%@", str);

reason:2015-07-20 17:55:19.548 OC05_NSString[1860:157191] 100, 3.14, 刘珊珊


6.字符串的大小写设置

    uppercaseString 所有的字符都大写

    lowercaseString 所有的字符都小写

    capitalizedString 首字母大写,其余小写

    NSString *str = @"liu ShanshAn";

    NSLog(@"%@", str.uppercaseString);

    NSLog(@"%@", str.lowercaseString);

    NSLog(@"%@", str.capitalizedString);

reason:

2015-07-20 18:00:46.853 OC05_NSString[1911:159338] LIU SHANSHAN

2015-07-20 18:00:46.853 OC05_NSString[1911:159338] liu shanshan

2015-07-20 18:00:46.854 OC05_NSString[1911:159338] Liu Shanshan


7.字符串的比较

         对应只有三个结果,一个是ASC升序结果是-1,一个是same相同结果是0,降序DESC,结果是1.这里的升序降序指的是ASSIC表中字符的对应的十进制大小

    NSString *str = @"nihao";

    NSString *newStr = @"buhao";

    NSLog(@"%ld", [str compare:newStr]);

reason:2015-07-20 19:07:00.626 OC05_NSString[1944:167838] 1

    NSString *str1 = @"buhao";

    NSString *newStr1 = @"nihao";

    NSLog(@"%ld", [str1 compare:newStr1]);

    

reason:2015-07-20 19:07:00.627 OC05_NSString[1944:167838] -1

    NSString *str2 = @"buhao";

    NSString *newStr2 = @"buhao";

    NSLog(@"%ld", [str2 compare:newStr2]);

reason:2015-07-20 19:07:00.627 OC05_NSString[1944:167838] 0


 8.字符串的拼接

          通过stringByAppendingString把两个字符串拼接到一起,stringByAppendingString前面是要拼接的字符串后面是拼接上的内容

    NSString *str11 = @"商帅爱";

    NSString *str12 = @"刘星宇";

    NSString *newstr = [str11 stringByAppendingString:str12];

    NSLog(@"%@", newstr);

reason: 2015-07-20 19:13:10.879 OC05_NSString[1952:170029] 商帅爱刘星宇


9.替换

    NSString *str = @"商帅没事穿裙子";

    NSString *strNew = [str stringByReplacingOccurrencesOfString:@"没事withString:@"最爱"];

    NSLog(@"%@", strNew);

    在替换时需要传递两个参数,第一个是需要被替换的内容,第二个参数是替换的内容

reson:2015-07-20 19:18:37.099 OC05_NSString[1968:172374] 商帅没事穿裙子 替换前

reson:2015-07-20 19:18:37.099 OC05_NSString[1968:172374] 商帅最爱穿裙子 替换后


10.NSMutableString可变字符串

在OC中NSString是不可变的字符串,NSMutableString则是可变字符串,它是NSString的子类.所以NSString有的特性它都有,NSMutableString同样也能使用NNString中的方法如下,其执行结果也和NSString一样:

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

在使用字面量创建时,创建的是不可变的字符串,只能用不可变的指针来接收

    NSMutableString *str = [[NSMutableString alloc] initWithString:@"俊宝宝"];

    NSLog(@"%@", str);

    

    NSMutableString *str1 = [NSMutableString stringWithString:@"商帅"];

    NSLog(@"%@", str1);

reason:2015-07-20 19:35:53.079 OC05_NSString[2003:178095] 俊宝宝

reason:2015-07-20 19:35:53.080 OC05_NSString[2003:178095] 商帅

需要注意在OC中"-"是对象用的,"+"是类用的."()"里是返回值类型 

11.插入

    NSMutableString *str = [NSMutableString stringWithString:@"nihao,wodemingzijiaoClare"];

    [str insertString:@"俊宝宝" atIndex:3];

    NSLog(@"%@", str);

    NSMutableString *str1 = [NSMutableString stringWithString:@"俊宝宝"];

  

reason:2015-07-20 19:44:52.474 OC05_NSString[2014:180170] nih俊宝宝ao,wodemingzijiaoClare

 

12.范围的替换

    [str1 replaceCharactersInRange:NSMakeRange(2, 1)withString:@""];

    NSLog(@"%@", str1);

reason:2015-07-20 19:44:52.475 OC05_NSString[2014:180170] 俊宝王

    

13.拼接

    NSString  *str2 = @"大熊";

    NSString *newStr2 = [str2 stringByAppendingString:@"哆啦A"];

    NSLog(@"%@", newStr2);

reason:2015-07-20 19:44:52.475 OC05_NSString[2014:180170] 大熊哆啦A

     可变字符串在方法上一般都是没有返回值的,都是对自身的内容进行修改,在访问的时候字符串已经发生了变化,但是不可变字符串会产生一个新的字符串,一般方法会返回NSString *.

    

练习:给定一个图片文件名,判断字符串中是否以“png”结尾,如果是就替换成“jpg”,如果 不是,就拼接”.jpg”

    NSString *pic = @"商帅不要脸.png";

    NSString *sur = @".png";

    NSString *newpic;

    if ([pic hasSuffix:sur]) {

        newpic = [pic stringByReplacingOccurrencesOfString:@"png" withString:@"jpg"];

    } else {

        newpic = [pic stringByAppendingString:@".jpg"];

    }

    NSLog(@"%@", newpic);

reason:2015-07-20 19:44:52.476 OC05_NSString[2014:180170] 商帅不要脸.jpg

    NSString *name = @"商帅不要脸.avi";

    if ([name hasSuffix:@"avi"]) {

        name = [name stringByReplacingOccurrencesOfString:@".avi" withString:@".png"];

    } else {

        name = [name stringByAppendingString:@".jpg"];

    }

    NSLog(@"%@", name);

    return 0;

}

reason:2015-07-20 19:44:52.476 OC05_NSString[2014:180170] 商帅不要脸.png




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值