objective-c学习之字符串!

1、字符串的创建

NSString *string1 = @"hello";

a、实例方法创建字符串【对象 方法】

NSString *string2 = [[NSString alloc] initWithString:string1];
    NSLog(@"string2 = %@",string2);

b、类方法创建字符串【类名 方法】

NSString *string3 = [[NSString stringWithString:string1];
    NSLog(@"string3 = %@",string3);

2、字符串格式化创建并且拼接

    NSString *string4 = @"张三";
    NSString *string5 = @"李四";
    a、实例方法创建
    NSString *string4 = [[NSString alloc] initWithFormat:@"%@--@",s1,s2];
    NSLog(@"string4 = %@",string4);
    b、类方法创建
    int age = 20;
    NSString *string5 = [NSString stringWithFormat:@"%@的年龄是%d",s1,age];
    NSLog(@"string5 = %@",string5);

3、字符串的比较

NSString *s5 = @"abcd";
NSString *s6 = @"abcd";
if(s5 == s6){//这里判断的是s5和s6的指针地址是否相同,并不是比较其中的字符串
    NSLog(@"s5的内存与s6的内存地址相等");
}else
{
    NSLog(@"s5的内存和s6的内存地址不相等");
}
NSLog(@"s5的内存地址是%p",s5);//打印指针地址用%p 
NSLog(@"s6的内存地址是%p",s6);

a、isEqualToString方法:字符串内容比较,一般都用这个方法,是区分大小写

    NSString *temps5 = [NSString stringWithFormat:@"abc%@",@"D"];
    BOOL isEqual = [s5 isEqualToString:tempS5];
    if(isEqual){
        NSLog(@"s5与temps5内容一样");
    }else
    {
        NSLog(@"s5与temps5内容不一样");
    }

b、不区分大小写的比较方法

    NSComparisonResult result = [s5 caseInsensitiveCompare:temps5];
    if(result == NSOrderedSame){
        NSLog(@"不区分大小写后,s5与temps5内容一样
    }

4、输入大写或者小写字符串

    NSString *s11 = @"This is a oc";
    NSString *s12 = @"Objective";
    NSLog(@"%@",[s11 uppercaseString]);//全部输出大写
    NSLog(@"%@",[s12 lowercaseString]);//全部输出小写
    NSLog(@"%@",[s12 capitalizedString]);//首字母大写输出

5、字符串的追加

    NSString *s13 = @"hello";
    NSString *s14 = @"world";
    a、直接追加字符串
    NSString *string13 = [s13 stringByAppendingString:s14];//这里的s14也可以直接为字符串
    b、格式化追加字符串,比直接追加好,直接追加只能追加一个参数,格式化追加可以追加多个参数
    NSString *string14 = [s13 stringByAppendingFormat:@"%@%d",s14,14];

6、字符串的查找

    a、
    NSString *s15 = @"www.csdn.net";
    NSRange = [s15 rangeOfString:@"net"];//rangOfString前面的参数是被查找的字符串,后面的参数是需要查找字符串,此句意思就是在s15里面找net,这里的net也可以改为定义的其他字符串的名字
    NSLog(@"%ld,%ld",range.location,range.length);//这里的location和length都是range结构体里。可以直接调用,打印出的结果为10 3,location从0开始算起

    b、判断是否查找到
    if(range.location != NSNotFound){//这里的NSNotfound在oc中是个宏定义,为LONG_MAX,意为一个最大的数,这个数只随32位和64位机器的改变才改变
        NSLog(@"找到");
    }else{
        NSLog(@"没找到");
    }

7、字符串的截取

a、
    NSString *s18 = @"http://www.csdn.net";

    NSString *string18 = [s18 substringToIndex:4];//截取前部分,从开头开始,也就是0位开始,但是取值不包括4这个位置,所以截取的结果为http

    NSString *string19 = [s18 substringFromIndex:5];//截取后部分,从指定的位置开始,截取到结束,但包括了指定位置,也就是包括了5,截取的结果为//www.csdn.net

    NSRange range = {2,5};//定义取值的位置和长度2表示location,5表示length
    NSString *string20 = [s18 substringWithRange:range];//表示从第二位开始截取5个字符,但是不包括2这个位置,结果为tp://

b、字符串中取单个元素
    NSString *s19 = @"qwerfasdhf";

    char c = [s19 characterAtIndex:2];//通过下标取元素,这里取下标为2的元素,下标从0开始
    NSLog(@"%c",c);//结果为e

c、字符串的遍历
    for (int i = 0;i < s19.length;i++){
        char c1 = [s19 characterAtIndex:i];
        NSLog(@"%c",c1);
    }

8、字符串与基本数据类型转换

    a、\\int float double bool ---> NSString
    int age1 = 14;
    NSString *intStr = [NSString stringWithFormat:@"%d",age1];\\将int转换为NSString,使用的是创建格式化字符串的类方法
    NSString *floatStr = [NSString stringWithFormat:@"%f",19.00];\\将float转换为NSString
    NSLog(@"%@,%@",intStr,floatStr);

    b、NSString --> Int Float
    int q = [intStr intValue];//将NSString强制转换为int
    float z = [floatStr floatValue];//将NSString强制转换为float

    c、转换后即可进行运算
    int k = q + z;

    d、也可以强制转换为bool类型
    BOOL isTure = [floatStr boolValue];
    NSLog(@"isTure = %d",isTure);//打印结果为1,因非0即为1

9、查询字符串是否包含

    NSString *s20 = @"http://csdn.net";

    BOOL isPre = [s20 hasPrefix:@"http"];//判断是否包含前缀http,也就是开头字母是不是http,返回值为bool值
    if(isPre){
        NSLog(@"包含前缀");
    }else
    {
        NSLog(@"不包含前缀");
    }

    BOOL isSuf = [s20 hasSuffix:@"net"];//判断是否包含后缀net,也就是从最后一位开始看,往前找,看是不是最后三位为net
    if(issue){
        NSLog(@"包含后缀");
    }else
    {
        NSLog(@"不包含后缀");
    }

10、compare方法:字符串比较,三种返回值

    NSString *s7 = @"This is a String";
    NSString *s8 = @"Tis is a String";
    NSComparisonResult result1 = [s7 compare:s8];//这里定义的result1必须为NSComparisonResult型,因为这个是其枚举类型的返回值,如果写bool类型的话,会导致升序的返回值无法传入bool,因为bool只有0和1,而升序也就是NSOrderedAscending的返回值为-1,就没办法写入bool,经测试只能够写NSComparisonResult
    if (result1 == NSOrderedSame) {
        NSLog(@"s7 = s8");
    }else if (result1 == NSOrderedAscending)
    {
        NSLog(@"s7<s8");
    }else if (result1 == NSOrderedDescending)
    {
        NSLog(@"s7>s8");
    }

其余记载:
stringWithFormat和initWithFormat的区别

+stringWithFormat:类方法,返回一个autorelease的NSString实例,不用手动Release,在自动释放池中会自动释放

-initWithFormat:实例方法,返回一个自己申请内存的NSString实例,根据OC内存管理黄金法则,管杀管埋,它则需要自己手动Release

因为这两个方法只是在没有使用ARC的时候有所不同,一个需要手动Release,一个则是自动进去autoreleasepool,所以在使用ARC的时候他们俩几乎没有什么区别。

以上这则其余记载摘录与另一位博友的博客!如有侵权,请通知我删除!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值