黑马程序员--ios基础--oc-foundation--NSString,NSArray与计算代码行数的练习
2015-05-14 18:18
543 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流!
-------
1. 结构体
在Foundation中定义了很多常用结构体类型来简化我们的日常开发,这些结构体完全采用Objective-C定义,和我们自己定义的结构体没有任何区别,之所以由框架为我们提供完全是为了简化我们的开发。常用的结构体有NSRange、NSPoint、NSSize、NSRect等
2.字符串
不可变字符串
在ObjC中字符串操作要比在C语言中简单的多,在下面的例子中你将看到字符串的初始化、大小写转化、后缀前缀判断、字符串比较、字符串截取、字符串转换等,通过下面的例子我们基本可以掌握常用的字符串操作(注意这些内容虽然基本,但却是十分常用的操作,需要牢记):
可变字符串
我们知道在字符串操作过程中我们经常希望改变原来的字符串,当然这在C语言中实现比较复杂,但是ObjC为我们提供了新的可变字符串类NSMutableString,它是NSString的子类。
3.数组
不可变数组
常用的数组操作:初始化、数组对象的方法执行、数组元素的遍历、在原有数组基础上产生新数组、数组排序等
注意点
NSArray中只能存放对象,不能存放基本数据类型。
数组中的元素后面必须加nil以表示数据结束
-------
1. 结构体
在Foundation中定义了很多常用结构体类型来简化我们的日常开发,这些结构体完全采用Objective-C定义,和我们自己定义的结构体没有任何区别,之所以由框架为我们提供完全是为了简化我们的开发。常用的结构体有NSRange、NSPoint、NSSize、NSRect等
// // Created by 裴涛涛 on 15/5/11. // Copyright (c) 2015年 裴涛涛. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { CGPoint p1 = NSMakePoint(10, 10); NSPoint p2 = CGPointMake(20, 20); NSSize s1 = CGSizeMake(33, 44); NSSize s2 = NSMakeSize(35, 21); CGSize s3 = NSMakeSize(90, 80); CGRect r1 = CGRectMake(0, 0, 20, 84); NSString *tt = NSStringFromRect(r1); NSLog(@"%@",tt); return 0; } void range() { // NSRange r3 = NSMakeRange(2, 4); NSString *str = @"i love oc"; NSRange range = [str rangeOfString:@"ptt"]; NSLog(@"loc = %ld, length = %ld",range.location,range.length); }
2.字符串
不可变字符串
在ObjC中字符串操作要比在C语言中简单的多,在下面的例子中你将看到字符串的初始化、大小写转化、后缀前缀判断、字符串比较、字符串截取、字符串转换等,通过下面的例子我们基本可以掌握常用的字符串操作(注意这些内容虽然基本,但却是十分常用的操作,需要牢记):
可变字符串
我们知道在字符串操作过程中我们经常希望改变原来的字符串,当然这在C语言中实现比较复杂,但是ObjC为我们提供了新的可变字符串类NSMutableString,它是NSString的子类。
3.数组
不可变数组
常用的数组操作:初始化、数组对象的方法执行、数组元素的遍历、在原有数组基础上产生新数组、数组排序等
注意点
NSArray中只能存放对象,不能存放基本数据类型。
数组中的元素后面必须加nil以表示数据结束
// Copyright (c) 2015年 裴涛涛. All rights reserved. // #import <Foundation/Foundation.h> #import "Person.h" int main(int argc, const char * argv[]) { Person *p = [[Person alloc] init]; // NSArray *array = @[p,@"ptt 5",@"zaixiang"]; // for (int i = 0; i < array.count; i++) { // NSLog(@"%@",array[i]); // } for(id obj in array) { NSUInteger i = [array indexOfObject:obj]; NSLog(@"%ld is %@",i,obj); } return 0; } void test () { NSURL *url = [[NSURL alloc] initWithString:@"http://www.baidu.com"]; NSString *s6 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil]; NSLog(@"%@",s6); } void test2() { [@"ptt\nptt" writeToFile:@"/Users/peitaotao/Desktop/总结.m" atomically:YES encoding:NSUTF8StringEncoding error:nil]; }可变数组
// #import <Foundation/Foundation.h> #import "Person.h" int main(int argc, const char * argv[]) { NSMutableArray *array = [NSMutableArray array]; [array addObject:[[Person alloc] init]]; [array addObject:@"ptt"]; NSLog(@"%ld",array.count); return 0; }
<pre name="code" class="html">#import <Foundation/Foundation.h> @interface Person : NSObject @end
<pre name="code" class="html">#import "Person.h" @implementation Person @end
<span style="white-space:pre"> </span>计算代码行数的练习
<span style="white-space:pre"> </span><pre name="code" class="html">// Copyright (c) 2015年 裴涛涛. All rights reserved. // /* *考察NSString、NSArray的使用 *NSFileManager */ #import <Foundation/Foundation.h> NSUInteger codeLineCount(NSString *path) /* path:文件的全路径(可能是文件夹、也可能是文件) 返回值int:代码行数 */ { //1.获得文件管理者 NSFileManager *mgr = [NSFileManager defaultManager]; //2. 标记是否为文件夹 BOOL dir = NO; //标记这个路径是否存在 BOOL exist = [mgr fileExistsAtPath:path isDirectory:&dir]; //如果不存在直接返回0 if(!exist) { NSLog(@"文件路径不存在"); return 0; } if (dir) { // NSLog(@"是个文件夹"); //获得当前文件夹path下面的所有内容(文件、文件夹) NSArray *array = [mgr contentsOfDirectoryAtPath:path error:nil]; int count = 0; //遍历数组中的所有子文件(夹)名 for (NSString *filename in array) { //获得子文件(夹)的全路径 NSString *fullPath = [NSString stringWithFormat:@"%@/%@",path,filename]; //NSLog(@"%@",fullPath); count += codeLineCount(fullPath); } return count; // // NSLog(@"%@",array); } else { // NSLog(@"是个文件"); //判断文件的拓展名(忽略大小写) NSString *extension = [[path pathExtension] lowercaseString]; if( ![extension isEqualToString:@"h"] && ![extension isEqualToString:@"m"] && ![extension isEqualToString:@"c"]) { return 0; } //加载文件内容 NSString *content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; // NSLog(@"%@",content); //将文件内容分割为每一行 NSArray *array = [content componentsSeparatedByString:@"\n" ]; //打印文件路径和行数 NSLog(@"%@----%d",path,array.count); return array.count; } /* int i = 0; for (NSString *line in array) { NSLog(@"%d++++++%@",i,line); i++; } */ } int main(int argc, const char * argv[]) { int count = codeLineCount(@"/Users/peitaotao/Desktop"); NSLog(@"%d",count); return 0; }
相关文章推荐
- 黑马程序员_OC基础14_计算代码行数Demo
- 黑马程序员——OC基础---Foundation<NSString,NSArray,NSMultableString>
- IOS学习--Foundation--计算文件中得代码行数(小练习)
- 黑马程序员---Foundation常用类练习(计算文件代码行数)
- Foundation - 练习:计算代码行数
- 黑马程序员--ios基础--oc-foundation--NSSet、NSDictionary、NSNumber、NSValue、NSDate
- 黑马程序员-IOS-OC基础-Foundation框架的简单使用
- 黑马程序员-IOS-OC基础-Foundation
- 黑马程序员——ios开发基础之OC中的Foundation框架(一)
- 黑马程序员—IOS基础之OC—static、self、NSString和NSLog讲解
- 黑马程序员——ios开发基础之OC中Foundation框架(二)、copy以及单例
- 黑马程序员————IOS学习笔记 第11篇 经典示例计算代码行数
- 黑马程序员-IOS笔记-Foundation之NSString、NSArray
- 黑马程序员-oc基础-Foundation中NSString类型的一些用法
- 黑马程序员——OC基础---Foundation之NSString
- 黑马程序员 oc随记 foundation框架 nsstring.NSmutable.nsarray与nsdictionay
- 黑马程序员 用OC实现的一个计算文件夹下代码行数的小程序
- 黑马程序员-IOS基础之OC框架(Foundation)
- 《Objective-c》Foundation框架 -(练习:计算整个文件夹的代码行数)
- 黑马程序员——OC基础---Foundation<NSArray补充,NSMultableArray,NSDictionary>