不可变字符串对象的创建及其基本操作

C语言字符串

  • 字符串必须用双引号包含
  • 字符串中的每个字符占一个字节,ASCII
  • C语言字符串的末尾有一个隐藏的’\0’
  • 打印C语言的字符串用 %s 占位符,传递字符串的首地址即可

OC字符串对象(NSString)

  • 字符串前面加上 @
  • 打印OC的字符串对象用 %@
  • OC字符串中对象中的每一个字符都是uichar字符,uichar字符符合unicode编码
  • Utf8编码存储字符串,不需要考虑字符存储
//
//  main.m
//  NSString对象基本操作
//
//  Created by weisuzhong on 2017/7/7.
//  Copyright © 2017年 weisuzhong. All rights reserved.
//

#import <Foundation/Foundation.h>

//C语言字符串
//"Hello World"
//1. C语言字符串必须用双引号包含
//2. C语言字符串中的每个字符占一个字节,ASCII
//3. C语言字符串的末尾有一个隐藏的'\0'
//4. 打印C语言的字符串用 %s 占位符,传递字符串的首地址即可

//字符串对象
//NSString
//1. 字符串前面加上 @
//2. 打印OC的字符串对象用 %@
//3. OC字符串中对象中的每一个字符都是uichar字符,uichar字符符合unicode编码
//4. Utf8编码存储字符串,不需要考虑字符存储

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        char *cstring = "Hello World 中国";
        printf("%c\n",cstring[7]);
        printf("%ld\n",sizeof("Hello World"));

        //ocstring是一个对象指针,指向常量区的字符串对象
        NSString *ocstring = @"Hello World 中国";//存储在常量区中
        NSLog(@"ocstring = %@",ocstring);

        //字符串的创建——构造方法
        //用C语言的字符串构造一个OC字符串对象
        NSString *OCStr = [[NSString alloc] initWithUTF8String:"Welcome to China"];
        NSLog(@"OCStr = %@",OCStr); //NSLog默认换行

        //格式化构造OC字符串对象
        NSString *OCStr1 = [[NSString alloc] initWithFormat:@"%s##%d##%@","Hello",888,@"China"];
        NSLog(@"OCStr1 = %@",OCStr1);

        //用传递的字符串对象构造新的字符串对象
        NSString *OCStr2 = @"上海火车站";
        NSString *OCStr3 = [[NSString alloc] initWithString:OCStr2];
        NSLog(@"OCStr3 = %@",OCStr3);

        //用C语言的字符串构造OC字符串对象,该方法主要用于iOS开发
        NSString *OCStr4 = [[NSString alloc] initWithCString:"中国教育" encoding:NSUTF8StringEncoding];
        NSLog(@"OCStr4 = %@",OCStr4);

        //创建字符串对象——类方法,将C语言字符串转换成OC字符串对象
        NSString *OCStr5 = [NSString stringWithUTF8String:"Hello World!"];
        NSLog(@"OCStr5 = %@",OCStr5);

        NSString *OCStr6 = [NSString stringWithString:OCStr2];
        NSLog(@"OCStr6 = %@",OCStr6);

        NSString *OCStr7 = [NSString stringWithFormat:@"%d,%.2f,%s",125,45.69,"Hello World"];
        NSLog(@"OCStr7 = %@",OCStr7);

        //用C语言的字符串来创建OC字符串对象
        NSString *OCStr8 = [NSString stringWithCString:"I am a good boy 来自中国" encoding:NSUTF8StringEncoding];
        NSLog(@"OCStr8 = %@",OCStr8);



        //字符串其它用法
        //求字符串的长度
        NSString *str = @"welcome 中国";
        NSInteger len = [str length];
        NSLog(@"len = %li",len);



        //获取指定下标位置的字符
        unichar ch = [str characterAtIndex:3];
        NSLog(@"ch = %C",ch); //%c 打印ASCII码字符,%C 打印unicode字符



        //追加字符串
        NSString *OCStr9 = [str stringByAppendingString:@"你好"];
        //格式化追加字符串
        NSString *OCStr10 = [str stringByAppendingFormat:@"%d%s",123," World"];
        NSLog(@"OCStr10 = %@",OCStr10);



        //字符串的提取
        //从指定下标位置提取子串到字符串末尾
        NSLog(@"subString = %@" , [OCStr10 substringFromIndex:4]);
        //提取子串到指定位置,不包含指定位置字符
        NSLog(@"subString = %@" , [OCStr10 substringToIndex:4]);

        //提取指定范围的子串
        NSRange range1 = {4,6};
        NSLog(@"subString = %@" , [OCStr10 substringWithRange:range1]);
        NSLog(@"subString = %@" , [OCStr10 substringWithRange:NSMakeRange(4, 6)]);



        //字符串查找
        NSString *OCStr11 = @"bai du hello world bai du";
        //返回子串在原字符串中的范围
        NSRange range2 = [OCStr11 rangeOfString:@"we"];
        if (range2.location == NSNotFound) {
            //NSNotFound是long类型范围内的最大值
            NSLog(@"NSNotFound = %li" , NSNotFound);
        }
        else{
            NSLog(@"查找该子串,location = %lu , length = %lu" , range2.location , range2.length);
        }

        //倒序查找字符串
        NSRange range3 = [OCStr11 rangeOfString:@"du" options:NSBackwardsSearch];
        NSLog(@"查找到该子串,location = %lu , length = %lu" , range3.location , range3.length);

        //在指定范围内查找字符串
        //NSLiteralSearch:正序查找
        NSRange range4 = [OCStr11 rangeOfString:@"du" options:NSLiteralSearch range:NSMakeRange(7, 14)];
        NSLog(@"查找到该子串,location = %lu , length = %lu" , range4.location , range4.length);



        //字符串的大小写转换
        NSString *OCStr12 = @"hello World!";
        NSLog(@"str = %@" , [OCStr12 uppercaseString]);
        NSLog(@"str = %@" , [OCStr12 lowercaseString]);
        NSLog(@"str = %@" , [OCStr12 capitalizedString]); //首字母大写



        //字符串数值转换
        NSLog(@"num = %i" , [@"1234asd" intValue]); //将字符串对象转换为int类型数值
        NSLog(@"num = %li" , [@"123456789" integerValue]); //将字符串对象转换为 NSInteger 类型的值
        NSLog(@"num = %.2f" , [@"3.1456" floatValue]); //把字符串对象转换为浮点类型



        //字符串的置换
        NSString *Str = @"hello world china hello world";

        //用传入的字符串对象替换指定范围的字符串
        NSLog(@"str = %@" , [Str stringByReplacingCharactersInRange:NSMakeRange(12, 5) withString:@"welcome"]);

        //用传入的字符串替换在原字符串中出现的所有目标字符串
        NSLog(@"str = %@" , [Str stringByReplacingOccurrencesOfString:@"world" withString:@"baidu"]);

        NSLog(@"str = %@" , [Str stringByReplacingOccurrencesOfString:@"hello" withString:@"HELLO" options:NSLiteralSearch range:NSMakeRange(12, 17)]);
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值