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. Linux命令之umask

    一 权限掩码umask umask是chmod配套的,总共为4位(gid/uid,属主,组权,其它用户的权限),不过通常用到的是后3个,例如你用chmod 755 file(此时这文件的权限是属主读( ...

  2. ssl 生成证书

    使用OpenSSL生成证书 1.生成RSA密钥的方法 openssl genrsa -des3 -out privkey.pem 2048 这个命令会生成一个2048位的密钥,同时有一个des3方法加 ...

  3. 涉及spring的相关概念

    1.pojo 2.为了降低java开发的复杂性,spring采用了4中策略 (1).基于POJO的轻量级和最小侵入性编程 (2).通过依赖注入和接口编程实现松耦合 (3).基于切面和惯例进行声明式编程 ...

  4. java中訪问修饰符

    较之c++ 中 public,proctected, private 三种訪问控制, java多了默认訪问控制. java中四种訪问控制权限 简单描写叙述为一下四句: 1)private 仅本类可见 ...

  5. 输入一个十进制数N,将它转换成R进制数输出(运用递归实现)

    #include<stdio.h> int cnt=0;                             //用来记录每个进制存放的位置 char num[20];   //用来存 ...

  6. 【BZOJ3277/3473】串/字符串 后缀数组+二分+RMQ+双指针

    [BZOJ3277]串 Description 字符串是oi界常考的问题.现在给定你n个字符串,询问每个字符串有多少子串(不包括空串)是所有n个字符串中至少k个字符串的子串(注意包括本身). Inpu ...

  7. 内网网络摄像机(RTSP/IPC/NVR)如何能在公网进行RTMP/HLS/HTTP-FLV直播

    一.背景需求 传统监控行业里不管是设备端.服务器端亦或是客户端都在一个内网里面.而且现在的大部分监控方案都是这样的格局,小到一个公司范围内的监控,再到一个园区.一个仓库监控.一个农业园林监控.一个养殖 ...

  8. SharePoint服务器端对象模型 之 访问网站和列表数据(Part 5)

    (五)列表条目(SPListItem) SharePoint中数据的存储基本上都是通过列表条目来完成(文档库中的文档也是一种特殊的列表条目),因此在SharePoint应用开发中,最终是要和列表条目打 ...

  9. <mvc:view-controller path=""/>标签的作用

    <mvc:view-controller path=""/>标签的作用 对应WEB-INF目录下面的JSP页面,我们知道是不能直接使用URL访问到.需要通过转发的方式, ...

  10. AngularCli项目中添加字体图标(Font)详解

    本文主要讲如何在AngularCli生成的项目中使用字体图标. 一 SVG图标准备 将需要转换为字体图标的图片转换为SVG格式. 这个让项目视觉设计师搞定即可. 二 SVG图标转Font 可以通过Ic ...