OC例题 关于创建文件,分割字符串componentsSeparatedByString

例题:

从文件中读取一个字符串,字符串的格式如下:“ 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;
}














  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值