Foundation框架-01 NSString对象

Foundation框架-01 NSString对象

Objective-C


1.NSString基本概念

  • NSString为OC中的字符串类型,用来存储字符串对象
  • 创建字符串对象
// 1.直接通过@""创建
// 直接通过@""创建,那么会讲字符串放到常量区中
// 如果是字符串常量,那么只要内容相同,不会重复创建
NSString *str1 = @"ZJ";
NSString *str2 = @"ZJ";
//str1和str2指向的地址相同
// 2.通过alloc或类工厂方法创建
// 如果通过方法2创建对象,那么字符串放到堆区中
NSString *str3 = [[NSString alloc] initWithFormat:@"ZJ"];
NSString *str4 = [[NSString stringWithFormat:@"ZJ"]];

2.文件读写

  • NSString 可以从文件中读写内容,主要涉及从文件路径读取即stringWithContentsOfFile:方法,以及资源路径读取即stringWithContentsOfURL:方法
  • 文件路径读取方法如下:
/*
     file: 文件路径,
     encoding: 编码方式
     error: 错误信息,如果读取错误, 会将错误信息保存到error中 ,如果读取正确, 就没有error = nil
     注意: 以后在OC方法中但凡看到XXXofFile的方法, 传递的一定是全路径(绝对路径)
     */
//文件路径
 NSString *path = @"/User/xxx/Desktop/abc.text";
 //错误
    NSError *error = nil;
// 通过文件路径读取文件内容
    NSString *str = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
    if (error == nil) {
//若是读取成功
        NSLog(@"%@",str);
    }else{
//若是读取失败,打印错误关键信息[error localizedDescription]
        NSLog(@"%@",[error localizedDescription]);
    }
  • 文件写方法:
//函数返回BOOL值,代表成功写入文件
//atomically 如果传入YES, 字符串写入文件的过程中如果没有写完, 那么不会生成文件
//如果传入NO, 字符串写入文件的过程中如果没有写完, 会生成文件
    [str writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:nil];
  • 资源文件路径读取方法如下:
    NSURL *url = [NSURL fileURLWithPath:@"/User/xxx/Desktop/abc.text"];
    NSError *error = nil;
    NSString *str = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];
    if (error == nil) {

        NSLog(@"str = %@", str);
    }else{
        NSLog(@"error = %@", [error localizedDescription]);
    }
  • 资源文件路径的写入方法(和路径写入基本类似):
    [str writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:nil];
  • URL说明
    • 全称是Uniform Resource Locator(统一资源定位符)
    • URL是互联网上标准资源的地址
    • 在互联网上的每个资源都有唯一的一个URL,用来指定资源所在的位置
  • URL格式
    • 基本URL包含协议、主机域名(服务器名称\IP地址)、路径
    • 例:http://image.baidu.com/channel,其中http为协议头,image.baidu.com为主机域名,后面是路径
  • 常见的URL协议头(URL类型)
    • http\https:超文本传输协议,网络资源
    • ftp:文本传输协议(服务器资源)
    • file:本地资源
  • URL的创建(通过文件路径创建的,默认就是file协议的)
    • NSURL *url =
      [NSURL fileURLWithPath:@”/User/xxx/Desktop/abc.text”];

3.字符串比较

  • 大小写处理

    • 全部转换为大写:-(NSString *)uppercaseString;
    • 全部转换为小写:-(NSString *)lowerccaseString;
    • 首字母变大写,其他变小写:-(NSString *)capitalizedString
  • 字符串比较

    • -(BOOL)isEqualToString:(NSString *)aString;//两个字符串的内容相同就返回YES,否者返回NO
    • -(NSComparisonResult)compare:(NSString *)string;
      • 比较两个字符串内容的大小,比较方法逐个字符进行比较ASCII值,返回NSComparisonResult作为比较结果
      • OC中90%的以NSXXX作为参数的都是枚举类型
      • NSComparisonResult是一个有三个值的枚举

    如果左侧大于右侧,返回NSOrderedDescending
    如果两者相等,NSOrderedSame
    如果左侧小于右侧,返回NSOrderedAscending

  • 字符串忽略大小写比较
    -(NSComparisonResult) caseInsensitiveCompare:(NSString *)string;
    返回值与上一个方法一致

  • 4.字符串搜索

    • 字符串搜索方法

      • -(BOOL)hasPrefix:(NSString *)aString;判断字符串是否以aString开头
      • -(BOOL)hasSuffix:(NSString *)aString;判断字符串是否以aString结尾
      • -(NSRange)rangeOfString:(NSString *)aString;判断字符串是否包含了aString,如果包含,就返回aString的范围,如果不包含,NSRange的location为NotFound,length为0
    • NSRange结构体

    typedef struct _NSRange {
        NSUInteger location;//当前位置
        NSUInteger length;//元素长度
    } NSRange;//通常用来描述事物的范围
    • NS结构体常用创建方法 NSMakeXXX();

    5.字符串的截取

    • -(NSString *)substringFromIndex:(NSUInteger)from;
      • 从指定位置from开始(包括指定位置的字符)到尾部
    • -(NSString *)substringToIndex:(NSUInteger)to;
      • 从字符串的开头一直截取到指定的位置to,但不包括该位置的字符
    • -(NSString *)substringWithRange:(NSRange)range;
      • 按照所给出的NSRange从字符串中截取子串
    • 例:
    //需求:要获取www.和.com之间的内容
    NSString *str = @"http://www.baidu.com";
    //NSRange(结构体): 位置/属性
    //动态获取截取的起始位置
    NSUIntrger location = [str rangeOfString:@"."].location + 1;
    //动态获取截取的长度
    NSUInteger length = [str rangeOfString:@"." options:NSBackwardsSearch].location - location;
    //方法二:
    //NSUInteger length = [str rangeOfString:@".com"].location - location;
    //创建一个位置描述结构体
    NSRange range = NSMakeRange(location, length);
    [str substringWithRange:range];//根据传入的位置截取字符串,返回一个新的字符串@"baidu"

    6.字符串的替换

    • -(NSString )stringByReplacingOccurrencesOfString:(NSString )target withString:(NSString *)replacement;
      • 用replacement替换target
    • -(NSString )stringByTrimmingCharactersInSet:(NSCharacterSet )set;

      • 去除首
    • NSCharacterSet是一个枚举变量


    7.字符串和路径

    • 路径

      • -(BOOL)isAbsolutePath;//判断是否为绝对路径,即判断是否以/开头
      • -(NSString *)lastPathComponent;//获得最后一个目录,即路径最后一个/之后的内容
      • -(NSString *)stringByDeletingLastPathComponent;//删除最后一个目录,即删除最后一个/以及/之后的内容
      • -(NSString )stringByAppendingPathComponent:(NSString )str;
        //在路径后面拼接一个目录,并保持只有一个/
    • 扩展名

      • -(NSString *)pathExtension;//获得文件的扩展名,即截取.后面的内容
      • -(NSString *)stringByDeletingPathExtension;//删除尾部的拓展名,即删除上述.以及.之后的内容
      • -(NSString )stringByAppendingPathExtension:(NSString )str;//在尾部添加一个拓展名,即在最后面拼接上.和指定的内容,并保证只有一个.

    8.字符串的转换

    • -(NSUInteger)length;//返回字符串的长度(有多少个文字);
    • -(unichar)characterAtIndex:(NSUInteger)index;//返回index位置对应的字符

    • 和基本数据类型的转换

      • (double)doubleValue;
      • (float)floatValue;
      • (int)intValue;
      • -(char *)UTF8String;//将OC中的字符串转化C语言中的字符串
      • +(instancetype)stringWithUTF8String:(const char *)TerminatedCString;//根据传入的C语言字符串转换为OC的字符串

    9.NSMutableString(可变字符串)

    • NSMutableString类 继承NSString类,它可以动态的增、删、改字符串,而且可以使用父类中的所有方法
    • NSString中的内容是不可变的,NSMutableString中的内容可动态改变

    10.NSMutableString常用方法

    • 增:-(void)appendString:(NSString *)aString;
    • 删:-(void)deleteCharactersInRange:(NSRange)range;
    • 替:-(void)replaceCharactersInRange:(NSRange)range withString:(NSString *)aString;
    • 注意:不能通过直接赋值的方式创建可变字符串;即:通过@”“形式直接赋值给NSMutableString会报错

    你可能感兴趣的:(Foundation框架)