黑马程序员——iOS开发——oc——NSString的学习

来源:互联网 发布:webshell采集器 编辑:程序博客网 时间:2024/05/22 11:59
------------Java培训、Android培训、iOS培训、.Net培训、期待与您交流!------------


NSString的基本认识


1、基本使用

/*     1、字符串的创建 (一般对象方法不用都是使用类方法)     直接赋值方式 (常用)     alloc 、initxxx 偶尔用     类方法 (常用):常用于拼接字符串、把基本数据类型转换为字符类型          注意: string是不可变字符串,如果初始化没有赋值,就会为空,不可添加,只能更改指向     */    NSString *s1 = @"abcdef"; // 直接赋值    NSString *s2 = [[NSString alloc] initWithFormat:@"aabbcc%d",10]; //alloc、initxx    NSString *s3 = [NSString stringWithFormat:@"age is %d", 10];     //类方法    s1 =  @"abcdf"; // 直接修改指向        /*     2、对数据转换的操作     1》基本数据类型转换为字符串     2》常用结构体类型转换为字符串     3》oc和c字符串的转换     */    // 基本数据类型转换为字符串    NSString *numStr = [NSString stringWithFormat:@"age is %d", 10]; // int类型转换为字符串类型    NSString *doubleStr = [NSString stringWithFormat:@"高度是: %.2f", 10.0]; // double转换为字符串类型        // 结构体转换为字符串类型(是函数方法,不是string对象或类方法)    CGRect rect = CGRectMake(10, 10, 10, 10);    NSString *rectStr =  NSStringFromRect(rect); // 结构体转换为字符串 (函数方法)        //oc 和 c 字符串相互转换    NSString *s4 = [[NSString alloc] initWithUTF8String:"abcd"];     // 将c字符串转换为 oc字符串    NSString *s5 = [NSString stringWithUTF8String:"abcd"];    const char *str5 = [s3 UTF8String];                               // oc转换为c字符串        /*     3、常用对其内容的操作     1》是否包含某个字符串->rangeOfString     2》遍历: length 、characterAtIndex     3》判断是否包含数字     */        // 判断字符串是否包含某个字符串(根据location是否是:NSNotFound)    NSString  *str = @"abcd efgh jk";    NSRange range = [str rangeOfString:@"bc"];    if (range.location == NSNotFound) {        NSLog(@"没有");    }else{        NSLog(@"有");    }            NSLog(@"-----字符串的遍历,并输出-------------");    // 遍历,characterAtIndex 根据索引值获取对应的字母,返回是字符类型    str = @"我们";    NSLog(@"length = %zd", str.length); // 结构是:2 (返回的是字符个数,而不是字节数)        str = @"abcd 1 cd0e 2";    for (int i = 0; i<str.length; i++) {        NSLog(@"%d ,%c",i,[str characterAtIndex:i]);    }    NSLog(@"-----判断是否有数字,并取出-------------");        // 判断是否包含数字 ——》根据asc码表种数字对应的值来判断    for (int i = 0; i<str.length; i++) {        if ([str characterAtIndex:i] >= '0' && [str characterAtIndex:i] <= '9') { // 必须是字符类型,根据的是asc码表种数字对应的值来判断            NSLog(@"%c",[str characterAtIndex:i]);        }    }    /*     4、对文件的操作     1》文件的读取     2》文件的写入     */    NSLog(@"-----读取操作文件(文本路径)-------------");    // 根据全路径,读取文本文件    NSString *path = @"/Users/an1911/Desktop/经典代码/Founcation框架的重点知识点/读取写入文件/readme.txt";    NSString *content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];    NSLog(@"\n%@",content);        NSLog(@"-----读取操作网络资源(也可以读取文件)-------------");    /*     URL : 资源路径 (可以读取文本文件,但资源路径不可以有中文)     协议头://路径     file://文本路径     http://网址     */    NSURL *url = [NSURL URLWithString:@"file:///Users/an1911/Desktop/经典代码/Founcation框架的重点知识点/读取写入文件/readme.txt"]; // 不可包含汉字,且必须是全路径,包括后缀名    NSLog(@"有中文的url = %@",url); // url为空    content = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];    NSLog(@"有中文——》\n%@",content);        url = [NSURL fileURLWithPath:@"/Users/an1911/Desktop/经典代码/Founcation框架的重点知识点/读取写入文件/readme.txt"]; // 如果确定是文本,可用这种方式()    NSLog(@"fileURLWithPath——》地址:\nurl = %@",url);    content = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];    NSLog(@"fileURLWithPath——》读取的内容:\n%@",content);        url = [[NSURL alloc] initWithString:@"file:///Users/an1911/Desktop/readme.txt"];    NSLog(@"无中文——》url = %@",url);    content = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];    NSLog(@"\n%@",content);    url = [NSURL URLWithString:@"http://www.baidu.com"];    //content = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];    // NSLog(@"\n%@",content);                NSLog(@"-----写入操作文本文件(对象方法)-------------");        NSString *writeStr = @"JAVA1\nJAVA2"; // 使用\n作为写入的换行    [writeStr writeToFile:@"/Users/an1911/Desktop/write.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];        url =[NSURL fileURLWithPath:@"/Users/an1911/Desktop/write2.txt"];    // url = [NSURL URLWithString:@"file:///Users/an1911/Desktop/write2.txt"];    [writeStr writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:nil];



2、可变字符串的基本使用

  NSMutableString *str = [NSMutableString stringWithFormat:@"abcef"];    [str appendString:@" hi"]; //在后面添加新的字符串(不会返回新的字符串,而是在原来的基础上改变)    NSLog(@"%@",str);    NSRange range = [str rangeOfString:@"bc"];    //[str deleteCharactersInRange:NSMakeRange(2,3)]; //删除range范围的字符串,CGRangeMake没有这个    [str deleteCharactersInRange:range];    NSLog(@"%@",str);        // 注意NSString 的 方法,结果是返回一个新的字符串,但是原来的字符串没有改变    NSString *str2 = @"abcdef";    NSString *newStr2 = [str2 stringByAppendingString:@"12121"];    NSLog(@"%@",str2);    NSLog(@"%@",newStr2);


3、读取文件内容,并计算文件的总行的函数


NSUInteger  countRows(NSString *path){    // 1、创建文件管理对象    NSFileManager *manger = [NSFileManager defaultManager];        // 2、判断是文件夹还是文件,并获取是否存在这个路径    BOOL isDir = NO;    BOOL isExist = [manger fileExistsAtPath:path isDirectory:&isDir];        // 3、判断是否存在    if(!isExist) return 0; //如果不存在就直接返回           // 如果是文件夹    if (isDir) {                NSUInteger sumCount = 0; // 定义接收总行数的变量                // 1>获取文件夹内所有内容(文件夹 和 各种)        NSArray *contents = [manger contentsOfDirectoryAtPath:path error:nil];        // 循环数组        for (NSString *str in contents) {           // 2>拼接当前文件夹内的文件或文件夹的全路径           NSString *fullPath = [NSString stringWithFormat:@"%@/%@", path,str];           // 3>递归方式获取总行数           sumCount +=  [CountRowsOfManyFile countRows:fullPath];        }                return sumCount;            }else{ // 如果是文件            // 判断文件的拓展名,只有是m和h后缀的可以通过 (拓展可能是大小写,避免小写的影响,一律转换为大写)        NSString *extension = [[path pathExtension] uppercaseString];               if ([extension isEqualToString:@"H"] || [extension isEqualToString:@"M"]) { //if (extension == "H" || extension == "M")                       // 1>获取文件的内容           NSString *content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];           // 2>计算内容的行数(分成数组、计算数组个数)           NSArray *array = [content componentsSeparatedByString:@"\n"];                      // 3> 为了输出方便看,把公共的文件夹路径取消           NSRange range = [path rangeOfString:@"/Users/an1911/Desktop/经典代码/Founcation框架的重点知识点/读取写入文件/"]; // 截取公共的文件夹路径范围           // NSString *newPath = [path substringFromIndex:range.length]; // 从index开始,取后面的(不包括当index)           NSString *newPath =[path stringByReplacingCharactersInRange:range withString:@""];                      NSUInteger count = array.count;           NSLog(@"%@  :%zd", newPath, count);                      return count;                  }else{                      return 0;                  }            }    }







0 0
原创粉丝点击