Chinaunix首页 | 论坛 | 博客
  • 博客访问: 50632
  • 博文数量: 34
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 297
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-09 10:52
文章分类

全部博文(34)

文章存档

2015年(23)

2014年(11)

我的朋友

分类: iOS平台

2015-04-13 16:40:10

一.结构体

NSRange   用来表示范围 

typedef struct _NSRange {

    NSUInteger location;

    NSUInteger length;

} NSRange;



第一个元素表示起始位置

第二个元素表示字符个数。

常用赋值方法如下

点击(此处)折叠或打开

  1.         NSRange aa;
  2.         aa.location = 3;
  3.         aa.length = 2;
  4.         NSRange bb = {4,5};
  5.         NSRange cc = {.location = 4,.length =1};
  6.         NSRange dd = NSMakeRange(3, 4);
  7.         NSString *st = NSStringFromRange(dd)


NSpoint  用来表示坐标

struct CGPoint {

  CGFloat x;

  CGFloat y;

};


点击(此处)折叠或打开

  1.         NSPoint p = {3,5};
  2.         NSString *sss = NSStringFromPoint(p);
  3.         NSMakePoint(3,3);//快速创建
  4.         CGPointMake(33, 1);//快速创建,最长用


NSSize 用来表示位置

struct CGSize {

  CGFloat width;

  CGFloat height;

};



点击(此处)折叠或打开

  1.         NSSize a1 = NSMakeSize(4, 33);
  2.         NSSize a2 = CGSizeMake(3, 1);
  3.         NSString *ssss = NSStringFromSize(a1)

包含坐标和位置

struct CGRect {

  CGPoint origin;

  CGSize size;

};

struct CGPoint {

  CGFloat x;

  CGFloat y;

};

struct CGSize {

  CGFloat width;

  CGFloat height;

};


点击(此处)折叠或打开

  1.         CGRect c1 ;
  2.         c1 = NSMakeRect(3, 1, 11, 11);
  3.         c1 = CGRectMake(2, 22, 44, 1)

二.字符串

下面看一下NSString的简单用法:

点击(此处)折叠或打开

  1. int main(int argc, const char * argv[]) {
  2.     @autoreleasepool {
  3.         //不需要管理内存,不需要释放
  4.         NSString *s1 = @"123";
  5.         //需要释放内存
  6.         NSString *s2 = [[NSString alloc] init];
  7.         s2 = @"456";
  8.         [s2 release];
  9.         //需要释放内存
  10.         NSString *s3 = [[NSString alloc]initWithString:@"123"];
  11.         [s3 release];
  12.         //需要释放内存,指向C语言方式的字符串
  13.         NSString *s4 = [[NSString alloc]initWithUTF8String:"123"];
  14.         [s3 release];
  15.         //需要释放内存,可变的字符串
  16.         NSString *s5 = [[NSString alloc]initWithFormat:@"123%d,%f",456,8.9];
  17.         [s5 release];
  18.         //NSLog(@"%@",s5);
  19.         //不需要管理内存, 会自动释放
  20.         NSString *s6 = [NSString stringWithString:@"123"];
  21.         NSString *s7 = [NSString stringWithFormat:@"123%d,%f",456,8.9];
  22.         NSError *err = nil;
  23.         NSError *err1 = nil;
  24.         NSError *err2 = nil;
  25.         NSString *path = @"/Users/jinhaiyang/Desktop/11";
  26.         //第一种读取文件字符串的方法
  27.         //方法已经过期了,不支持中文
  28.         //NSString *s8 = [NSString stringWithContentsOfFile:path];
  29.         //指定UTF8编码?
  30.         NSString *s8 = [NSString stringWithContentsOfFile:pathencoding:NSUTF8StringEncoding error:&err];
  31.         //err == nil 没有错误
  32.         if(err == nil){
  33.             NSLog(@"---%@---",s8);
  34.         }else{
  35.             NSLog(@"读取失败");
  36.         }
  37.         //第2种读取文件字符串的方法
  38.         NSURL *url = [NSURL URLWithString:@"file:///Users/jinhaiyang/Desktop/11"];
  39.         NSString *s9 = [NSString stringWithContentsOfURL:urlencoding:NSUTF8StringEncoding error:err1];
  40.         if(err1 == nil){
  41.             NSLog(@"---%@---",s9);
  42.         }else{
  43.             NSLog(@"读取失败");
  44.         }
  45.         //这种方法也可以读取远程文本
  46.         NSURL *url1 = [NSURL URLWithString:@""];
  47.         NSString *s10 = [NSString stringWithContentsOfURL:url1encoding:NSUTF8StringEncoding error:err2];
  48.         if(err2 == nil){
  49.             NSLog(@"---%@---",s10);
  50.         }else{
  51.             NSLog(@"读取失败");
  52.         }
  53.         
  54.     }
  55.     return 0;

  56. }
OC中异常不经常被使用

下面是个字符串写入文件的例子:

点击(此处)折叠或打开

  1. #import <Foundation/Foundation.h>
  2. //字符串导出
  3. int main(int argc, const char * argv[]) {
  4.     @autoreleasepool {
  5.         
  6.         NSString *s = @"123哇哇哇哇哇哇哇";
  7.         NSString *path = @"/Users/jinhaiyang/Desktop/22";
  8.         NSError *err = nil;
  9.         //atomically
  10.         //YES 原子性 先创建一个临时文件,把字符串先放到临时文件 然后给目标文件
  11.         //NO 非原子性 直接给目标文件
  12.         //如果文件不存在他会帮我们自动创建一个文件
  13.         //如果目录不存在,则返回失败
  14.         //编码格式有误,也会返回失败
  15.         [s writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:&err];
  16.         
  17.         if(err == nil){
  18.             NSLog(@"%@",s);
  19.             
  20.         }else{
  21.             //只是报错主要的信息
  22.             NSLog(@"读写错误-%@",[err localizedDescription]);
  23.         }
  24.     }
  25.     return 0;
  26. }
下面是一些常用的字符串和可变数组的使用方法:

点击(此处)折叠或打开

  1. #import <Foundation/Foundation.h>

  2. int main(int argc, const char * argv[]) {
  3.     @autoreleasepool {
  4.         //大小写处理
  5.         NSString *s1 = @"abc";
  6.         //大写
  7.         NSLog(@"%@",[s1 uppercaseString]);
  8.         //小写
  9.         NSLog(@"%@",[s1 lowercaseString]);
  10.         //只有首字母变大写
  11.         NSLog(@"%@",[@"abCdE" capitalizedString]);
  12.         
  13.         //字符串比较
  14.         //比较字符串内容是否一样
  15.         BOOL b = [@"abc" isEqualToString:@"abc"];
  16.         NSLog(@"%d",b);
  17.         //比较字符串大小
  18.         //NSOrderedAscending 右比左大, NSOrderedSame 一样 , NSOrderedDescending 右比左小
  19.         NSComparisonResult co = [@"abc" compare:@"ABC"];
  20.         if ( co == NSOrderedAscending) {
  21.             NSLog(@"升序");
  22.         }else if (co == NSOrderedSame){
  23.             NSLog(@"一样");
  24.         }else{
  25.             NSLog(@"降序");
  26.         }
  27.         //忽略大小写进行比较
  28.         [@"abc" caseInsensitiveCompare:@"Abc"];
  29.         
  30.         //字符串的搜索
  31.         //是否已它开头
  32.         NSString *s2 = @"aqbc123";
  33.         NSLog(@"%d",[s2 hasPrefix:@"aq"]);
  34.         //是否已它结尾
  35.         NSLog(@"%d",[s2 hasSuffix:@"23"]);
  36.         //它在字符串的位置
  37.         NSRange ra = [s2 rangeOfString:@"c21"];
  38.         //ra.location == NSNotFound 没找到
  39.         if ( ra.length == 0) {
  40.             NSLog(@"没找到");
  41.         }else{
  42.             NSLog(@"%@",NSStringFromRange(ra));
  43.         }
  44.         //可以传入参数,前面还是后面搜索
  45.         //尾部开始搜索
  46.         [s2 rangeOfString:@"123" options:NSBackwardsSearch];
  47.         
  48.         //字符串的截取
  49.         //从第4个开始截取
  50.         NSLog(@"%@",[s2 substringFromIndex:3]);
  51.         //截取到第4个,不包括4
  52.         NSLog(@"%@",[s2 substringToIndex:3]);
  53.         NSRange nsr = NSMakeRange(2, 3);
  54.         //从第三个开始截取3个
  55.         NSLog(@"%@",[s2 substringWithRange:nsr]);
  56.         //用数组装,进行分割
  57.         NSString *s3 = @"a-2-3-123-2";
  58.         NSArray *arr = [s3 componentsSeparatedByString:@"-"];
  59.         NSLog(@"%@",arr);
  60.         //访问数组
  61.         NSLog(@"%@",[arr objectAtIndex:2]);
  62.         
  63.         
  64.         //路径
  65.         //快速创建可变数组
  66.         NSMutableArray *n1 = [NSMutableArray array];
  67.         [n1 addObject:@"123"];
  68.         [n1 addObject:@"abc"];
  69.         //将数组的东西拼成路径
  70.         NSString *p1 = [NSString pathWithComponents:n1];
  71.         NSLog(@"%@",p1);
  72.         //路径分割成数组
  73.         NSArray *n2 = [p1 pathComponents];
  74.         NSLog(@"%@",n2);
  75.         //判断是否是绝对路径
  76.         NSString *p3 = @"/12/werw/2adsf";
  77.         NSLog(@"%d",[p3 isAbsolutePath]);
  78.         //返回最后一个目录名字
  79.         NSLog(@"%@",[p3 lastPathComponent]);
  80.         //删除最后一个目录
  81.         NSLog(@"%@",[p3 stringByDeletingLastPathComponent]);
  82.         //在最后拼接一个目录
  83.         NSLog(@"%@",[p3 stringByAppendingPathComponent:@"bbb"]);
  84.         
  85.         //扩展名
  86.         NSString *p4 = @"123.txt";
  87.         NSString *p5 = @"mmm";
  88.         //获取扩展名
  89.         NSLog(@"%@",[p4 pathExtension]);
  90.         //删掉扩展名
  91.         NSLog(@"%@",[p4 stringByDeletingPathExtension]);
  92.         //拼接扩展名
  93.         NSLog(@"%@",[p5 stringByAppendingPathExtension:@"mp3"]);
  94.         
  95.         //转换
  96.         NSString *si = @"1234";
  97.         int a = [si intValue];
  98.         NSLog(@"%d",a);
  99.         
  100.         //计算字数,不是字符数
  101.         NSLog(@"%zd",[@"你好北京" length]);
  102.         
  103.         //取字符
  104.         char c =[@"abcdsf" characterAtIndex:3];
  105.         NSLog(@"%c",c);
  106.         
  107.         //返回C语言字符串
  108.         const char *ssss = [@"adad" UTF8String];
  109.         NSLog(@"%s",ssss);
  110.         
  111.     }
  112.     return 0;
  113. }


可变字符串的一些用法:

点击(此处)折叠或打开

  1. #import <Foundation/Foundation.h>

  2. int main(int argc, const char * argv[]) {
  3.     @autoreleasepool {
  4.         //指定字符串容量,,预先分配10个字符,效率会高
  5.         NSMutableString *s = [[NSMutableString alloc] initWithCapacity:10];
  6.         [s setString:@"123"];
  7.         NSLog(@"%@",s);
  8.         
  9.         //拼接字符串
  10.         //没有返回值,改变的就是s
  11.         [s appendString:@"456"];
  12.         NSLog(@"%@",s);
  13.         [s appendFormat:@"789%f",0.123];
  14.         NSLog(@"%@",s);
  15.         //替换字符串
  16.         //NSRange ns = NSMakeRange(4, 2);
  17.         NSRange ns = [s rangeOfString:@"567"];
  18.         [s replaceCharactersInRange:ns withString:@"no"];
  19.         NSLog(@"%@",s);
  20.         //插入字符串
  21.         [s insertString:@"xxx" atIndex:3];
  22.         NSLog(@"%@",s);
  23.         //删除字符串
  24.         NSRange ns1 = [s rangeOfString:@"89"];
  25.         [s deleteCharactersInRange:ns1];
  26.         
  27.         NSLog(@"%@",s);
  28.         
  29.     }
  30.     return 0;
  31. }


阅读(708) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~