Objective-c的字符串的常用操作

int main(int argc, const char * argv[])

{


    @autoreleasepool {

        //NSString常用方法

        //1. 创建字符串对象

        //(1). 直接赋值

        NSString *str1 = @"直接给值的字符串";

        

        //(2). 初始化方法

        NSString *str2 = [[[NSString alloc]initWithString:str1] autorelease];

        //现有的字符串来创建

        

        //(3). 便利构造器

        NSString *str3 = [NSString stringWithString:str1];

        

        NSString *str5 = @"非常";

        NSString *str4 = [[NSString alloc]initWithFormat:@"今夜阳光明媚%@", str5];

        NSLog(@"%@", str4);

        

        NSString *str6 = [NSString stringWithFormat:@"今夜阳光%@明媚", str5];

        NSLog(@"%@", str6);

        

        //2. 获取字符串中某个位置上的字符

        NSLog(@"%lu", sizeof(unichar));

        unichar c = [str6 characterAtIndex:3];

        NSLog(@"%C", c);

        

        //3. 获取字符串的长度

        NSLog(@"%lu", [str1 length]);

        NSLog(@"%lu", [str2 length]);

        NSLog(@"%lu", [str3 length]);

        NSLog(@"%lu", [str4 length]);

        NSLog(@"%lu", [str5 length]);

        NSLog(@"%lu", [str6 length]);

        

        //4. 获取字符串中得子串

        NSString *sentence = @"梁立德和刘若曈是好基友";

        NSString *liang = [sentence substringToIndex:3];

        NSLog(@"%@", liang);

        NSString *friend= [sentence substringFromIndex:8];

        NSLog(@"%@", friend);

        

//        NSRange range = {4, 3};//{区域, 长度}

        NSString *liu = [sentence substringWithRange:NSMakeRange(4, 3)];

        NSLog(@"%@", liu);

        

        //5. 判断字符串是否以某个前缀开头

        //例如:以下姓名字符串是否都姓""开头

        NSString *name1 = @"刘天娇";

//        NSString *name2 = @"刘传瑞";

//        NSString *name3 = @"王阳";

//        NSString *name4 = @"刘旭";

//        NSString *name5 = @"小黄人";

        

        if ([name1 hasPrefix:@""]) {

            NSLog(@"%@姓刘", name1);

        } else {

            NSLog(@"%@不姓刘", name1);

        }

        

        

        //6. 判断字符串是否以某个后缀结束

        //例如: 通过文件名判断是否是图片文件

        //.jpg, .jpeg, .bmp, .gif, .png

        

        NSString *fileName = @"yanZhaoMen.avi";

        if ([fileName hasSuffix:@".jpg"] || [fileName hasSuffix:@".jpeg]"] || [fileName hasSuffix:@".bmp"] || [fileName hasSuffix:@".gif"] || [fileName hasSuffix:@".png"]) {

            NSLog(@"文件%@是图像文件", fileName);

        }

        

        //7. 判断字符串中是否包含另一个字符串, 在什么位置

        NSString *text = @"NSString primitive (funnel) methods. A minimal subclass of NSString just needs to implement these, although we also recommend getCharacters:range:. See below for the other methods.";

        NSString *searchString = @"字符串";

        NSRange range2 = [text rangeOfString:searchString];

        NSLog(@"loc:%lu len:%ld", range2.location, range2.length);

        NSLog(@"%lu", NSNotFound);  //找不到 1. 则就是这个数, 枚举  2. length = 0

        //不可变的类型

        

        //8. 字符串拼接

        NSString *s1 = @"Hard";

        NSString *s2 = @"Work";

        NSString *s = [s1 stringByAppendingString:s2];

        NSLog(@"%@", s);

        

        NSString *together = [NSString stringWithFormat:@"%@+%@", s1, s2];

        NSLog(@"%@", together);

        //整形常量 枚举

        

        //9. 字符串替换(作业)

        NSMutableString *st = [NSMutableString stringWithFormat:@"2B青年"];

        [st replaceCharactersInRange: NSMakeRange(0,2) withString:@"文艺"];

        NSLog(@"%@", st);

   

        

        

        //10. 字符串比较

        NSLog(@"A B %ld", [@"A" compare:@"B"]);

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

        NSLog(@"B C %ld", [@"C" compare:@"B"]);

        NSLog(@"BA BC %ld", [@"BA" compare:@"BC"]);

        

        

        //11. 大小写之间的转换(作业)

        NSString *str = @"kAbbbbFFFeCtt";

        NSLog(@"%@",[str uppercaseString]);//将字符串中得所有小写字母转化为大写字符,不改变原来的字符串

        NSLog(@"%@",[str lowercaseString]);//将字符串中得所有大写字母转化为小写字符,不改变原来的字符串

//        NSLog(@"%@",[str capitalizeString]);//将字符串中出现的第一个字母转化为大写,其余字母小写

        

        

        //12. 字符串和数值类型转换

        //(1). 数字(基本数据类型)转字符串对象

        NSString *num1 = [NSString stringWithFormat:@"%ld + %d = %d", 365L, 120, 365 + 120];

        NSLog(@"%@", num1);

        //(2). 字符串转数字类型

        NSString *num2 = @"1234";                   //int

        NSString *num3 = @"3.14159";                //float

        NSString *num4 = @"8888888888.6666";        //double

        int a2 = [num2 intValue];

        float a3 = [num3 floatValue];

        double a4 = [num4 doubleValue];

        NSLog(@"%d, %f, %f", a2, a3, a4);           //输出结果精确度

        

        //13. 字符串与数组

        //(1). 字符串转数组

        NSString *string = @"beiJing, Welcome, To, Here";

        NSLog(@"string:%@", string);

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

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

        NSString *value = [array objectAtIndex:0];

        NSLog(@"value:%@", value);                  //取出第0个元素

        //(2). 数组转字符串

        NSString *string1 = [array componentsJoinedByString:@","];

        NSLog(@"string1:%@", string1);

        

        //14. 字符串转化

        //OC字符串转化为C的字符串

        NSString *string2 = @"Hello, worle!";

        const char *p = [string2 UTF8String];

        

        

        

        /*可变的字符串类 NSMutableString*/

        //1. 创建

        NSMutableString *stringM1 = [NSMutableString stringWithFormat:@"薛继苗"];

        //2. 字符串拼接

        [stringM1 appendString:@"的身高"];

        [stringM1 appendFormat:@"%d", 2];

        NSLog(@"%@", stringM1);

        

        //用不可变字符串的拼接方法

//        stringM1 = [stringM1 stringByAppendingString:@"?"];

        NSLog(@"%@", stringM1);

        

        //3. 插入字符

        [stringM1 insertString:@"今年" atIndex:0];

        NSLog(@"%@", stringM1);

        

        //4. 删除字符

        [stringM1 deleteCharactersInRange:NSMakeRange(5, 5)];

        NSLog(@"%@", stringM1);

        

        //5. 查找并删除

        NSRange substr = [stringM1 rangeOfString:@""];

        if (substr.location != NSNotFound) {

            [stringM1 deleteCharactersInRange:substr];

        }

        

        //6. 替换字符串

        NSMutableString *st1 = [NSMutableString stringWithFormat:@"2B青年"];

        [st1 replaceCharactersInRange: NSMakeRange(0,2) withString:@"文艺"];

        //从第0个字符串处除掉2个字符, 并换成"文艺"

        NSLog(@"%@", st1);

    

    }

    return 0;

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
译者序 作者简介 技术审校人员简介 第1章 前言 1.1 本书的内容 1.2 本书的组织方式 1.3 致谢 第1部分 Objective-C语言 第2章 Objective-C程序设计 2.1 编译并运行程序 2.1.1 使用Xcode 2.1.2 使用Terminal 2.2 解释第一个程序 2.3 显示变量的值 2.4 小结 2.5 练习 第3章 类、对象和方法 3.1 到底什么是对象 3.2 实例和方法 3.3 用于处理分数的Objective-C类 3.4 @interface部分 3.4.1 选择名称 3.4.2 实例变量 3.4.3 类和实例方法 3.5 @implementation部分 3.6 Program部分 3.7 实例变量的访问以及数据封装 3.8 小结 3.9 练习 第4章 数据类型和表达式 4.1 数据类型和常量 4.1.1 int类型 4.1.2 float类型 4.1.3 double类型 4.1.4 char类型 4.1.5 限定词:long、long long、short、unsigned及signed 4.1.6 id类型 4.2 算术表达式 4.2.1 运算符的优先级 4.2.2 整数运算和一元负号运算符 4.2.3 模运算符 4.2.4 整型值和浮点值的相互转换 4.2.5 类型转换运算符 4.3 赋值运算符 4.4 计算器类 4.5 位运算符 4.5.1 按位与运算符 4.5.2 按位或运算符 4.5.3 按位异或运算符 4.5.4 一次求反运算符 4.5.5 向左移位运算符 4.5.6 向右移位运算符 4.6 类型:_Bool、_Complex和_Imaginary 4.7 练习 第5章 循环结构 5.1 for语句 5.1.1 键盘输入 5.1.2 嵌套的for循环 5.1.3 for循环的变形 5.2 while语句 5.3 do语句 5.4 break语句 5.5 continue语句 5.6 小结 5.7 练习 第6章 选择结构 6.1 if语句 6.1.1 if-else结构 6.1.2 复合条件测试 6.1.3 嵌套的if语句 6.1.4 else if结构 6.2 switch语句 6.3 Boolean变量 6.4 条件运算符 6.5 练习 第7章 类 7.1 分离接口和实现文件 7.2 合成存取器方法 7.3 使用点运算符访问属性 7.4 具有多个参数的方法 7.4.1 不带参数名的方法 7.4.2 关于分数的操作 7.5 局部变量 7.5.1 方法的参数 7.5.2 static关键字 7.6 self关键字 7.7 在方法中分配和返回对象 7.8 练习.. 第8章 继承 8.1 一切从根类开始 8.2 通过继承扩展—添加新方法 8.2.1 Point类和内存分配 8.2.2 @class指令 8.2.3 具有对象的类 8.3 重载方法 8.3.1 择哪个方法 8.3.2 重载dealloc方法和关键字super 8.4 通过继承扩展:添加新的实例变量 8.5 抽象类 8.6 练习 第9章 多态、动态类型和动态绑定 9.1 多态:相同的名称,不同的类 9.2 动态绑定和id类型 9.3 编译时和运行时检查 9.4 id数据类型与静态类型 9.5 有关类的问题 9.6 使用@try处理异常 9.7 练习 第10章 变量和数据类型 10.1 类的初始化 10.2 作用域回顾 10.2.1 控制实例变量作用域的指令 10.2.2 外部变量 10.2.3 静态变量 10.3 存储类说明符 10.3.1 auto 10.3.2 const 10.3.3 volatile 10.4 枚举数据类型 10.5 typedef语句 10.6 数据类型转换 10.6.1 转换规则 10.6.2 符号扩展 10.7 练习 第11章 分类和协议 11.1 分类 11.2 协议 11.3 合成对象 11.4 练习 第12章 预处理程序 12.1 #define语句 12.1.1 更高级的定义类型 12.1.2 #运算符 12.1.3 ##运算符 12.2 #import语句 12.3 条件编译 12.3.1 #ifdef、#endif、#else和#ifndef语句 12.3.2 #if和#elif预处理程序语句 12.3.3 #undef语句 12.4 练习 第13章 基本的C语言特性 13.1 数组 13.1.1 数组元素的初始化 13.1.2 字符数组 13.1.3 多维数组 13.2 函数 13.2.1 参数和局部变量 13.2.2 函数的返回结果 13.2.3 函数、方法和数组 13.3 结构 13.3.1 结构的初始化 13.3.2 结构数组 13.3.3 结构中的结构 13.3.4 关于结构的补充细节 13.3.5 不要忘记面向对象编程思想 13.4 指针 13.4.1 指针和结构 13.4.2 指针、方法和函数 13.4.3 指针和数组 13.4.4 指针运算 13.4.5 指针和内存地址 13.5 联合 13.6 它们不是对象 13.7 其他语言特性 13.7.1 Compound Literal 13.7.2 goto语句 13.7.3 空语句 13.7.4 逗号运算符 13.7.5 sizeof运算符 13.7.6 命令行参数 13.8 工作原理 事实#1:实例变量存储在结构中 事实#2:对象变量实际上是指针 事实#3:方法是函数,而消息表达式是 函数调用 事实#4:id类型是通用指针类型 13.9 练习 第二部分 Foundation框架 第14章 Foundation框架简介 第15章 数字、字符串和集合 15.1 数字对象 15.2 字符串对象 15.2.1 NSLog函数 15.2.2 可变对象与不可变对象 15.2.3 可变字符串 15.2.4 所有对象到哪里去了 15.3 数组对象 15.4 同步AddressCard方法 15.4.1 快速枚举 15.4.2 数组排序 15.5 词典对象 15.6 集合对象 15.7 练习 第16章 使用文件 16.1 管理文件和目录:NSFileManager 16.1.1 使用NSData类 16.1.2 使用目录 16.1.3 枚举目录中的内容 16.2 使用路径:NSPathUtilities.h 16.2.1 常用的路径处理方法 16.2.2 复制文件和使用NSProcessInfo类 16.3 基本的文件操作:NSFileHandle 16.4 练习 第17章 内存管理 17.1 自动释放池 17.2 引用计数 17.2.1 引用计数和字符串 17.2.2 引用计数与实例变量 17.3 自动释放池示例 17.4 内存管理规则摘要 17.5 垃圾回收 17.6 练习 第18章 复制对象 18.1 copy和mutableCopy方法 18.2 浅复制与深复制 18.3 实现协议 18.4 用赋值方法和取值方法复制对象 18.5 练习 第19章 归档 19.1 使用XML属性列表进行归档 19.2 使用NSKeyedArchiver归档 19.3 编码方法和解码方法 19.4 使用NSData创建自定义档案 19.5 使用归档程序复制对象 19.6 练习 第三部分 Cocoa和iPhone SDK 第20章 Cocoa简介 20.1 框架层 20.2 接触Cocoa 第21章 编写iPhone应用程序 21.1 iPhone SDK 21.2 第一个iPhone应用程序 21.2.1 创建新的iPhone应用程序项目 21.2.2 输入代码 21.2.3 设计界面 21.3 iPhone分数计算器 21.3.1 启动新的Fraction_Calculator项目 21.3.2 定义视图控制器 21.3.3 Fraction类 21.3.4 处理分数的Calculator类 21.3.5 设计UI 21.4 小结 21.5 练习 第四部分 附录 附录A 术语表 附录B Objective-C 2.0语言概览 附录C 地址簿源代码 附录D 资源

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值