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;
}














Objective-C 中,解析字幕文件有多种方式,这里介绍两种常用的方法: 1. 使用 NSString 的方法读取字幕文件并解析 可以使用 NSString 类的方法读取字幕文件并解析。具体步骤如下: 1)使用 NSString 的类方法 `stringWithContentsOfFile:encoding:error:` 读取字幕文件的内容,该方法返回一个字符串对象。 2)将字符串按照指定的分隔符(如换行符)分割成多行。 3)遍历每一行,如果该行不为空且不以注释标识符开头,则将其解析成字幕对象,例如将每行的时间戳、字幕内容等信息提取出来,并将其保存到一个数组中。 示例代码如下: ```objc NSString *filePath = @"字幕文件路径"; NSString *fileContent = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil]; NSArray *lines = [fileContent componentsSeparatedByString:@"\n"]; NSMutableArray *subtitles = [NSMutableArray array]; for (NSString *line in lines) { if (line.length > 0 && ![line hasPrefix:@"#"]) { // 解析字幕对象,并将其添加到数组中 Subtitle *subtitle = [self parseSubtitleFromLine:line]; [subtitles addObject:subtitle]; } } ``` 2. 使用第三方库解析字幕文件 还可以使用第三方库来解析字幕文件,例如 SRT 解析库 `SRTParser`,它可以解析常见的字幕格式,包括 SRT、SUB、SSA 等。使用该库解析字幕文件的代码如下: ```objc NSString *filePath = @"字幕文件路径"; NSURL *fileURL = [NSURL fileURLWithPath:filePath]; NSError *error = nil; SRTParser *parser = [[SRTParser alloc] init]; NSArray *subtitles = [parser parseSRTFileAtURL:fileURL error:&error]; if (error) { NSLog(@"解析字幕文件失败:%@", error); } else { NSLog(@"解析出 %lu 条字幕", subtitles.count); } ``` 以上是两种常用的解析字幕文件的方法,你可以根据自己的需求选择其中一种。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值