例题:
从文件中读取一个字符串,字符串的格式如下:“
ID:01213221312\n@TITLE:nba\n@DATE:2007-01- 20\n@AUTHOR:laowang\n@"
注意其中的大写单词为固定好的字段名,冒号和“
\n@
”之间为具体的数据,请编写一个函数,能够根据实际要求从源串中解析出指定的数据。要求调用函数时,传给函数两个参数:原字符串、字段名。返回解析好的数据。
例如:
NSString*str = "@ID:01213221312\n@TITLE:nba\n@DATE:2007-01-20\n@AUTHOR:laowang\n@";
调用时只需要将
str
和
DATE
传入,则函数可以返回数据:
2007-01-20
。
任务要求
(1) 1.
字符串可以自己定义,也可以接收用户输入,但是注意判断用户输入格式。
(2) 2.
字段名要求为接收用户输入
3.给予用户适当的信息提示
一下参考多方面,代码如下
yix
Method.h文件代码
#import <Foundation/Foundation.h>
@interface Method : NSObject
-(id)findString:(id)_Key format:(id)_String;
@end
Method.h代码
#import "Method.h"
@implementation Method
-(id)findString:(id)_Key format:(id)_String
{
NSArray *pArr=[_String componentsSeparatedByString:@"\n@"];
NSArray *pArr2=nil;
for(NSString* string in pArr)
{
if ([string hasPrefix:_Key]) {
pArr2=[string componentsSeparatedByString:@":"];//再次切割字符串
}
}
return [pArr2 objectAtIndex:1];//返回第二个元素
}
@end
main.m代码
#import <Foundation/Foundation.h>
#import "Method.h"
int main(int argc, constchar * argv[])
{
@autoreleasepool {
NSString *pFileName=@"file";
//char *pStr="ID:01213221312\n@TITLE:nba\n@DATE:2007-01-20\n@AUTHOR:laowang\n@";
//NSMutableString *pString=[[NSMutableString alloc]initWithUTF8String:pStr];//将C转换为OC
NSString *pString=[[NSStringalloc]initWithUTF8String:"ID:01213221312\n@TITLE:nba\n@DATE:2007-01-20\n@AUTHOR:laowang\n@"];
//创建一个文件管理对象
NSFileManager *pFileManager=[NSFileManagerdefaultManager];
//创建缓存对象
NSData *pData=nil;
NSData *pData2=nil;
//创建Handle对象
NSFileHandle *pHandle=nil;
//创建Method对象
Method *pMethod=[[Methodalloc]init];
//创建字符数组,接收字段名
char arr_Char[20];
NSLog(@"请输入要查找的字段名");
gets(arr_Char);
//将C字符串转换为OC
NSString *pChar=[[NSStringalloc] initWithUTF8String:arr_Char];
/******将字符串写入文件********/
pData=[pString dataUsingEncoding:NSUTF8StringEncoding];//将字符串放入缓存区
if ([pFileManager fileExistsAtPath:pFileName]==NO) {
if ([pFileManager createFileAtPath:pFileName contents:pData attributes:nil]==YES) {
NSLog(@"%@文件创建成功",pFileName);
}
else
{
NSLog(@"%@文件创建失败",pFileName);
return -1;
}
}
else
{
NSLog(@"%@文件已存在",pFileName);
//return -1;
}
/*****************从文件中读取字符串*********************/
if ((pHandle=[NSFileHandlefileHandleForReadingAtPath:pFileName])==nil) {
NSLog(@"打开%@文件并读取失败",pFileName);
return -1;
}
else
{
NSLog(@"打开%@文件并读取成功",pFileName);
}
pData2=[pHandle readDataToEndOfFile];//
NSString *pStr=[[NSStringalloc]initWithData:pData2 encoding:NSUTF8StringEncoding];
NSLog(@"%@",[pMethod findString:pChar format:pStr ]);//输出要查找的
[pHandle closeFile];//关闭文件
}
return0;
}
以