ObjectC快速入门教程(2)---字符串

原创 2016年08月29日 20:10:22

背景

本文主要介绍Object C里使用频率比较高的NSString及NSMutableString两个类的使用(前者为不可变字符串类,后者为可变字符串类)及两者的常用方法.

一,NSString的使用

1.字符串比较

可以直接使用compare函数得到NSComparisonResult结果:

  //NSOrderedAscending 递增, NSOrderedSame 相等, NSOrderedDescending 递减
        NSString *str1 = [NSString stringWithFormat:@"%@", @"hello world"];
        NSString *str2 = [NSString stringWithUTF8String:"hello world"];
        NSComparisonResult result = [str1 compare:str2];
        if(result == NSOrderedAscending){
            NSLog(@"str1 小于 str2");
        }else if(result == NSOrderedSame){
            NSLog(@"str1 等于 str2");
        }else if(result == NSOrderedDescending){
            NSLog(@"str1 大于 str2");
        }

2.不区分大小写比较

      //1.1不区分大小写进行比较
        NSComparisonResult result2 = [str1 caseInsensitiveCompare:str2];

        //1.2不区分大小写的另外一种写法
        NSComparisonResult result3 = [str1 compare:str2 options:NSCaseInsensitiveSearch];
        NSLog(@"result3 = %li", result3);

3.判断字符串对象是否相等

isEqualToString

4.字符串开头结尾判断

   //1.4字符串开头判断
        BOOL ret = NO;
        NSString *str3 = @"www.baidu.com baidu uuu";
        ret = [str3 hasPrefix:@"www"];
        NSLog(@"ret = %d", ret);

        //1.5字符串结尾判断
        ret = [str3 hasSuffix:@"com"];
        if(ret == YES){
            NSLog(@"%@ 以com结尾", str3);
        }

5.字符串拼接

NSString *str4 = @"www";
        NSString *str11 = [str4 stringByAppendingString:@".baidu.com"];
        NSLog(@"str11 = %@", str11);
        NSString *str12 = [str4 stringByAppendingFormat:@"rest%d%s", 123, "hello"];
        NSLog(@"str11 = %@", str12);

6.字符串提取

NSString *str13 = [str3 substringFromIndex:4]; //从起始位置截取到结束
        NSLog(@"str13 = %@", str13);
        NSLog(@"test = %@", [str3 substringToIndex:4]); //不包含指定位置
        NSLog(@"test = %@", [str3 substringWithRange:NSMakeRange(4, 3)]);//起始位置和长度

7.字符串查找

   NSRange rage = [str3 rangeOfString:@"baidu"];
        //static const NSInteger NSNotFound = NSIntegerMax;
        if(rage.location != NSNotFound){
            NSLog(@"loc = %li, lenth = %li", rage.location, rage.length);
        }

        //倒序查找
        NSRange rage2 = [str3 rangeOfString:@"baidu" options:NSBackwardsSearch];
        if(rage2.location != NSNotFound){
            NSLog(@"loc = %li, lenth = %li", rage2.location, rage2.length);
        }

        //指定范围查找
        NSRange rage3 = [str3 rangeOfString:@"baidu" options:NSLiteralSearch range:NSMakeRange(4, 4)];
        if(rage3.location == NSNotFound){
            NSLog(@"未查到...");
        }

8.字符串大小写转换

  NSString *str = @"hello,World,test";
        NSLog(@"%@", [str uppercaseString]); //小写转大写
        NSLog(@"%@", [str lowercaseString]); //大写转小写
        NSLog(@"%@", [str capitalizedString]); //每个单词的小写转大写

9.字符串数值转换

 NSString *test = @"1234";
        NSLog(@"test = %i", [test intValue]); //转int
        NSLog(@"test = %li", [test integerValue]);//转NSInteger对象
        NSLog(@"test = %.2f", [test floatValue]);

10.字符串置换

     NSString *t1 = @"Hello, how are you!";
        NSString *t2 = [t1 stringByReplacingCharactersInRange:[t1 rangeOfString:@"how"] withString:@"howw"];
        //替换元字符串出现的所有目标字符串
        NSString *t3 = [t1 stringByReplacingOccurrencesOfString:@"how" withString:@"howwww"];
        NSLog(@"t3 = %@, 原始 = %@", t3, t1);

11.文件的输入输出

  NSError *error = nil;
        NSString *tt1 = [NSString stringWithContentsOfFile:@"/Users/yanzi/Desktop/1.txt" encoding:NSUTF8StringEncoding error:&error];
        if(error){
            NSLog(@"error = %@", error);
        }else{
            NSLog(@"tt1 = %@", tt1);
        }

        //NSString写入文件
        NSString *tt2 = @"中国人";
        BOOL saveRet = [tt2 writeToFile:@"/Users/yanzi/Desktop/2.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
        if(saveRet){
            NSLog(@"写入成功");
        }else{
            NSLog(@"写入失败");
        }

二,NSMutableString的使用

1.创建和拼接

NSMutableString *mS1 = [NSMutableString stringWithUTF8String:"李小龙"];
        [mS1 appendString:@",中国人"];
        NSLog(@"mS1 = %@", mS1);
        //创建指定容量大小的可变字符串对象
        //等于@"",空字符串对象,不是nil
        NSMutableString *ms2 = [[NSMutableString alloc]initWithCapacity:20];

2.插入字符串

[mS1 insertString:@"hello" atIndex:0];//增加字符串

3.删除指定范围的字符串

[mS1 deleteCharactersInRange:NSMakeRange(0, 2)]; 

4.重置字符串

[mS1 setString:@"中国人民"];

5.用传入的字符串替换指定范围内的字符

[mS1 replaceCharactersInRange:NSMakeRange(0, 2) withString:@"美国"];
        NSLog(@"mS1 = %@", mS1);
        [mS1 replaceOccurrencesOfString:@"美国" withString:@"中国" options:NSLiteralSearch range:NSMakeRange(0, [mS1 length])];
        NSLog(@"mS1 = %@", mS1);

系列代码已上传github

ObjectC快速入门教程(1)--创建类

背景本文记录学习ObjectC过程中的心得,参照网易云课堂视频,职坐标,记录视频的练习代码,并将要点进行总结。其实很多视频教程都不错,之前看的M了个J老师。本文包含创建一个Person类及Fracti...
  • yanzi1225627
  • yanzi1225627
  • 2016年08月15日 16:59
  • 1021

ObjectC快速入门教程(3)---数组和字典

一.不可变数组1.创建总结:OC中数组是对象的有序集合,数组存储的是对象的地址(对象的引用),不可变数组一旦被创建,不可以继续添加,删除,或者修改;数组中的元素可以为不同类型的对象. NSArray...
  • yanzi1225627
  • yanzi1225627
  • 2016年08月30日 11:38
  • 1168

Android快速入门教程总结帖

从3月份底开始,到5月15号,刚好差不多1个半月,小巫受CSDN学院邀请成为在线讲师,录制了第一门课程,关于Android入门的。从一开始录制这个课程非常困难,不停的NG,毕竟有点感觉一个人对着屏幕说...
  • wwj_748
  • wwj_748
  • 2015年05月17日 12:05
  • 4101

Jmeter 快速入门教程(二)--创建简单web测试

今天我们就来实际用Jmeter创建一个测试场景,并进行性能测试. 注:由于本人使用中文版本,使用英文版本的请注意具体的菜单及参数名称. 1. 添加线程组(相当于lr里的scenario 设置) ...
  • hualusiyu
  • hualusiyu
  • 2014年09月04日 11:05
  • 776

快速ObjectC基本语法

一.类的定义 #import    //    1 @interfaceStudent : NSObject  //   2 {        int age ;        NSString *...
  • ylwdi
  • ylwdi
  • 2014年02月12日 16:18
  • 378

maven 简单入门教学

Maven那点事儿(Eclipse版) 前言:   由于最近工作学习,总是能碰到Maven的源码。虽然平时工作并不使用Maven,但是为了学习一些源码,还是必须要了解下。这篇文章不是一个...
  • maple980326
  • maple980326
  • 2016年08月03日 15:51
  • 4471

Object-c之正则表达式之一

比较常用的例子//邮箱 + (BOOL) validateEmail:(NSString *)email { NSString *emailRegex = @"[A-Z0-9a-z._%+-]...
  • BaiHuaXiu123
  • BaiHuaXiu123
  • 2015年11月17日 21:36
  • 938

Object-C 实现MD5常用实例

WsqMD5Util.h // // WsqMD5Util.h // Created by apple on 13-10-4. // Copyright (c) 2013年 All rights...
  • glt3953
  • glt3953
  • 2013年10月18日 16:56
  • 4516

yii快速入门教程2

三、控制器(Controller) 控制器 是 CController 类的子类的实例。它在当用户请求时由应用创建。当一个控制器运行时,它执行所请求的动作(控制器类方法),动作通常会引入所必要的模型...
  • guanhui077
  • guanhui077
  • 2013年03月12日 14:58
  • 389

OpenCL快速入门教程

目录(?)[-] 设备Device Kernel 主机Host 建立基本OpenCL运行环境分配内存程序和kernel运行kernel读取结果清理 OpenCL快速入...
  • u012361418
  • u012361418
  • 2015年06月13日 10:51
  • 447
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ObjectC快速入门教程(2)---字符串
举报原因:
原因补充:

(最多只允许输入30个字)