8月17日NSString

一、字符串的创建

  1. //1.创建常量字符串
  2. NSString *str1 = @"hello world";
  3. NSLog(@"%@",str1);
  4. //2.通过类方法创建字符串
  5. NSString *str2 = [NSString stringWithString:str1];
  6. NSLog(@"str2 = %@",str2);
  7. //3.通过实例方法创建字符串
  8. NSString *str3 = [[NSString alloc]initWithString:str1];
  9. NSLog(@"str3 = %@",str3);
  10. //4.通过格式化方式创建字符串
  11. NSString *str4 = [NSString stringWithFormat:@"user = %@,pwd = %@",@"xu",@"123456"];
  12. NSLog(@"str4 = %@",str4);
  13. //5.通过C语言字符串创建
  14. const char *str5 = "how are you";
  15. NSString *str6 = [NSString stringWithUTF8String:str5];
  16. NSLog(@"str6 = %@",str6);
  17. //6.通过文件方式创建字符串
  18. NSError *error;
  19. NSString *str7 = [NSString stringWithContentsOfFile:@"/Users/mac/Desktop/OC进行时/day06/01-NSString/1.txt" encoding:NSUTF8StringEncoding error:&error];
  20. if (!error) {
  21. NSLog(@"str7 = %@",str7);
  22. }
  23. else
  24. {
  25. NSLog(@"文件读取失败:%@",error);
  26. }
  27. //7.通过URL方式创建字符串
  28. NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
  29. NSString *str8 = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];
  30. if (!error) {
  31. NSLog(@"str8 = %@",str8);
  32. }
  33. else
  34. {
  35. NSLog(@"文件读取失败:%@",error);
  36. }
二、字符串的比较
  1. NSString *str1 = @"hello world";
  2. NSString *str2 = @"how are you";
  3. NSString *str3 = [NSString stringWithString:str1];//使用已有的字符串创建新的字符串
  4. //方式1
  5. if (str1 == str3){
  6. NSLog(@"str1 == str3");
  7. }
  8. //方式2
  9. if ([str1 isEqual:str3]) {
  10. NSLog(@"str1 == str3");
  11. }
  12. //方式3
  13. if ([str1 isEqualTo:str3]) {
  14. NSLog(@"str1 == str3");
  15. }
  16. //方式4
  17. if([str1 isEqualToString:@"hello world"])
  18. {
  19. NSLog(@"str1 == str3");
  20. }
  21. //方式5
  22. NSComparisonResult result = [str1 compare:str2];
  23. if (result == NSOrderedSame) {
  24. NSLog(@"str1 == str2");
  25. }
  26. else if (result == NSOrderedAscending)
  27. {
  28. NSLog(@"str1 < str2");
  29. }
  30. else//NSOrederDescending
  31. {
  32. NSLog(@"str1 > str2");
  33. }
  34. /*
  35. compare的是一个枚举类型的,如果返回值为:-1表示NSOrderedAscending;返回值为0:NSOrderedSame;返回值为1:NSOrderedDescending
  36. */
三、字符串检索
  1. NSString *str1 = @"how are you";
  2. NSRange range = [str1 rangeOfString:@"are"];
  3. NSLog(@"location = %ld,length = %ld",range.location,range.length);
  4. NSString *str2 = @"http://www.baidu.com”;
  5. //判断字符串是否以某前缀开头
  6. if ([str2 hasPrefix:@"http://"]) {
  7. NSLog(@"http协议");
  8. }
  9. //判断字符串是否以某后缀结尾
  10. NSString *str3 = @"/users/destTop/1.txt";
  11. if ([str3 hasSuffix:@"txt"]) {
  12. NSLog(@"文本文件");
  13. }
  14. NSString *str4 = @"http://www.baidu.com?user=admin&pwd=123456";
  15. NSRange range1 = [str4 rangeOfString:@"user="];
  16. NSRange range2 = [str4 rangeOfString:@"pwd="];
  17. NSUInteger location = range1.location + range1.length;
  18. NSUInteger length = range2.location-location;
  19. NSRange range3 = NSMakeRange(location, length);
  20. NSString *user = [str4 substringWithRange:range3];
  21. NSString *pwd = [str4 substringFromIndex:range2.location + range2.length];
  22. NSLog(@"user = %@,pwd =%@",user,pwd);

四、其他类型转换字符串

  1. NSString *str1 = [NSString stringWithFormat:@"%d,%.2f,%c,%s",10,12.34,'a',"hello world"];
  2. NSLog(@"str1 = %@",str1);
  3. //1.字符串转整型
  4. NSString *str2 = @"20";
  5. NSInteger i = [str2 integerValue];
  6. NSLog(@"i = %ld",i);
  7. //2.字符串转实型
  8. CGFloat j = [str2 doubleValue];
  9. NSLog(@"j = %.2lf",j);
  10. //3.字符串转C语言字符串
  11. NSString *str4 = @"how are you";
  12. const char *pStr = [str4 UTF8String];
  13. NSLog(@"pStr = %s",pStr);
 
五、可变字符串的常用操作
  //1.创建
  NSMutableString *str = [NSMutableString stringWithCapacity : 容量];
  //2.添加内容
  [str appendSting:@“hello world”];
  [str appendFormat:@“%d”,123];
  //这两种插入方式都在尾部进行插入;
  //3.插入内容:  
  [str insertString:@“ok “ atIndex:插入位置];
  //4.替换内容
  NSRange range = [str rangeOfString:@“world”];  
  [str replaceCharactersInRange:range withString:@“WORLD”];
  //5.删除内容
  [str deleteCharactersRange:range];
  //6.设置成其他字符串
  [str setString:@“how are you”];
 
六、自定义结构体
  //1、创建一个Student为例:
  1.   typedef struct
  2.   {  
  3.     char *name;
  4.     int age;
  5.     char gender;
  6.   }Student;
  7.   Student stu = {“zhangsan”,22,’F’};
  8.   NSValue *value = [NSValue valueWithBytes:&stu objcType:@encode(Student)];
  9.   NSLog(@“name = %s,age = %d,gender = %c”,stu.name,stu.age,stu.gender);
  10.   Student stu2;
  11.   [value getValue:&stu2];
  12.   NSLog(@“name = %s,age = %d,gender = %c”,stu2.name,stu2.age,stu2.gender);

  /* 封装自定义结构体的操作:

1.声明结构体变量

2.创建一个NSValue的值对象,并将结构体变量的地址存放进去,

3.也可以通过getValue将值对象存储的数据存放到另外一个结构体变量中。

*/

  2、在Foundation下的常用结构体NSRange、NSPoint、NSSize、NSRect
  //1.创建一个结构体变量,用来确定范围
  1. NSRange range = NSMakeRange(0,5);
  2. //2.创建一个值对象
  3. NSValue *value = [NSValue valueWithRange:range];
  4. //3.取出这个值对象的值
  5. NSRange range2 = [value rangeValue];
  NSPoint、NSSize、NSRect与NSRange的操作雷同,不再一一列举。
 
七、NSArray
  //1、创建
  1. NSArray *arr1 = @[@"one",@"two",@"three",@"four”];
  2. //通过对象
  3. NSArray *arr2 = [NSArray arrayWithObjects:@"one",@"two",@"three",@"four", nil];
  4. NSArray *arr3 = [[NSArray alloc]initWithObjects:@"one",@"two",@"three",@"four", nil];
  5. NSArray *arr4 = [[NSArray alloc]initWithArray:arr3];  
   //2、遍历
  1. //第一种:
  2. for (int i = 0; i<[arr2 count]; i++) {
  3. NSLog(@"arr2->%@",arr2[i]);
  4. }
  5. //第二种:
  6. for (int i = 0; i < [arr2 count]; i++) {
  7. NSLog(@"arr2->%@",[arr2 objectAtIndex:i]);
  8. }
  9. //第三种:
  10. [arr2 enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
  11. NSLog(@"index = %ld,obj = %@",idx,obj);
  12. if ([obj integerValue] == 3) {
  13. *stop = YES;
  14. }
  15. }];
  16. //第四种:
  17. for(id obj in arr2)
  18. {
  19. NSLog(@"%@",obj);
  20. }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

OC_NSString、的更多相关文章

  1. js-静态、原型、实例属性

    本篇来说一下js中的属性: 1.静态属性 2.原型属性 3.实例属性 静态属性: function klass(){} var obj=new klass(); klass.count=0; klas ...

  2. 【.net 深呼吸】细说CodeDom(2):表达式、语句

    在上一篇文章中,老周厚着脸皮给大伙介绍了代码文档的基本结构,以及一些代码对象与CodeDom类型的对应关系. 在评论中老周看到有朋友提到了 Emit,那老周就顺便提一下.严格上说,Emit并不是针对代 ...

  3. javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈

    Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...

  4. IE6、7下html标签间存在空白符,导致渲染后占用多余空白位置的原因及解决方法

    直接上图:原因:该div包含的内容是靠后台进行print操作,输出的.如果没有输出任何内容,浏览器会默认给该空白区域添加空白符.在IE6.7下,浏览器解析渲染时,会认为空白符也是占位置的,默认其具有字 ...

  5. jQuery UI resizable使用注意事项、实时等比例拉伸及你不知道的技巧

    这篇文章总结的是我在使用resizable插件的过程中,遇到的问题及变通应用的奇思妙想. 一.resizable使用注意事项 以下是我在jsfiddle上写的测试demo:http://jsfiddl ...

  6. 初识Hadoop、Hive

    2016.10.13 20:28 很久没有写随笔了,自打小宝出生后就没有写过新的文章.数次来到博客园,想开始新的学习历程,总是被各种琐事中断.一方面确实是最近的项目工作比较忙,各个集群频繁地上线加多版 ...

  7. boosting、adaboost

    1.boosting Boosting方法是一种用来提高弱分类算法准确度的方法,这种方法通过构造一个预测函数系列,然后以一定的方式将他们组合成一个预测函数.他是一种框架算法,主要是通过对样本集的操作获 ...

  8. 《Web 前端面试指南》1、JavaScript 闭包深入浅出

    闭包是什么? 闭包是内部函数可以访问外部函数的变量.它可以访问三个作用域:首先可以访问自己的作用域(也就是定义在大括号内的变量),它也能访问外部函数的变量,和它能访问全局变量. 内部函数不仅可以访问外 ...

  9. .Net Core MVC 网站开发(Ninesky) 2.4、添加栏目与异步方法

    在2.3中完成依赖注入后,这次主要实现栏目的添加功能.按照前面思路栏目有三种类型,常规栏目即可以添加子栏目也可以选择是否添加内容,内容又可以分文章或其他类型,所以还要添加一个模块功能.这次主要实现栏目 ...

随机推荐

  1. 【BZOJ4724】[POI2017]Podzielno 数学+二分

    [BZOJ4724][POI2017]Podzielno Description B进制数,每个数字i(i=0,1,...,B-1)有a[i]个.你要用这些数字组成一个最大的B进制数X(不能有前导零, ...

  2. 一、docker临时记录

    docker 临时记录(阿里云centos7.2.1511 ) 查看系统版本号 适用于Redhat/CentOS: [root@iz2zecm4ndtkaue32tynx5z ~]# cat /etc ...

  3. 新提交审核app保留检查更新入口将被拒绝

    3月起要求关闭所有App内的检查更新功能,苹果App Store将向用户自动提示更新,新提交审核版本如果保留检查更新入口审核时将被拒绝,请各产品团队重点关注. 10.6 - Apple and our ...

  4. es 中 for in for of

    arr=[11,22,33,44,55,66,77,88]for (const i in arr){ console.log(i) if (i===4){ console.log(arr[i]) }} ...

  5. 原文来自 url get

    w http://www.tuicool.com/articles/BvYbEvR http://36kr.com/p/5069371.html?utm_source=tuicool&utm_ ...

  6. js,jquery和dojo操作dom

    最近想学习arcgis javascript api,拦路虎就是dojo,为了便于理解dojo,在学习dojo的同时参考原生js和jquery,下午学习了下dom操作,mark下! 一.获取元素 js ...

  7. 如何使用 stl 进行排列组合?

    #include <iostream> #include <vector> #include <algorithm> //从 indexs 集合中选择 num 个元 ...

  8. MySQL权限系统(二). MySQL提供的特权 Privileges Provided by MySQL

    MySQL provides privileges that apply in different contexts and at different levels of operation: Adm ...

  9. 2. 安装 Kerberos

    2.1. 环境配置 安装kerberos前,要确保主机名可以被解析. 主机名 内网IP 角色 Vmw201 172.16.18.201 Master KDC Vmw202 172.16.18.202 ...

  10. Android之四大组件、六大布局、五大存储

    [-] Android六大界面布局方式 1 LinearLayout线性布局 LinearLayout的常用XML属性及相关方法 LinearLayout子元素支持的常用XML属性及方法 2 Tabl ...