常用类-NSString

NSString


注:NSString类的对象是不可变的,就是说,一个字符串一旦被创建,就不可再次改变它的内容。默认使用UTF-16编码。

字符串的创建
  • @”“
// 最简单的就是这个啦。
NSString *str = @"This is a string."
  • stringWithFormat:
// 根据后面的格式化串进行初始化。格式化串和NSLog方法的参数一样。
NSString *str = [NSString stringWithFormat: @"%d,%f,%@", 1, 2, @"哈哈"];
  • stringWithCString:encoding:
// 按照指定编码从C语言类型的字符串获取NSString
NSString *str = [NSString stringWithFormat: @"%d,%f,%@", 1, 2, @"哈哈"];
  • stringWithContentsOfFile:encoding:error:
    // 第一个/不可少
    NSString *path = @"/Users/hskj/names.txt";
    // 从文件中获取字符串 error
    NSString *str = [NSString stringWithContentsOfFile: path
                                              encoding: NSUTF8StringEncoding
                                                 error: nil];
  • stringWithContentsOfURL:encoding:error:
    // url统一资源定位符 file://代表本地文件
    NSURL *url = [NSURL URLWithString:@"file:///Users/hskj/names.txt"];
    // 从URL中获取字符串
    NSString *str = [NSString stringWithContentsOfURL:url
                                             encoding:NSUTF8StringEncoding
                                                error:nil];
字符串的持久化
  • writeToFile:atomically:encoding:error:
    [@"123456" writeToFile:@"/Users/hskj/namesCopy.txt" // 写入的路径
                atomically:YES // 是否是原子化,原子化可以在写入异常时不创建文件
                  encoding:NSUTF8StringEncoding // 编码方式
                     error:nil]; // 错误信息
  • writeToURL:atomically:encoding:error:
    NSURL *url = [NSURL URLWithString:@"file:///Users/hskj/nameCopy.txt"];
    [@"123456" writeToURL:url // 写入的路径
               atomically:YES // 是否是原子化,原子化可以在写入异常时不创建文件
                 encoding:NSUTF8StringEncoding // 编码方式
                    error:nil]; // 错误信息
长度相关
  • length
// 只读属性。获取字符个数,
NSLog(@"%lu", @"字符串".length); // 3
// strlen("字符串"); // 输出可不是3
  • lengthOfBytesUsingEncoding:
    // 字符个数,3
    NSLog(@"%lu", @"字符串".length);
    // 字节数,9
    NSLog(@"%lu", [@"字符串" lengthOfBytesUsingEncoding:NSUTF8StringEncoding]);
读取内容
  • characterAtIndex:
    // 获取指定索引的字符
    NSLog(@"%c", [@"123" characterAtIndex:0]);
  • hasPrefix: / hasSuffix:
    // 判断是否以给定字符开始
    NSLog(@"%i", [@"123456" hasPrefix: @"123"]);
    // 判断是否以给定字符结尾
    NSLog(@"%i", [@"123456" hasSuffix: @"456"]);
  • rangeOfString:
    // 获取给定字符串的范围
    NSRange range = [@"123456" rangeOfString:@"123"];
比较
  • ==
    比较两个字符串的地址是否相同
  • isEqualToString:
    NSString *s1 = @"123456";
    NSString *s2 = @"1234567";
    // 比较内容是否相同
    NSLog(@"%i", [s1 isEqualToString: s2]);
  • compare: options:
    NSString *s1 = @"123456";
    NSString *s2 = @"1234567";
    // 根据比较参数进行比较
    NSComparisonResult result = [s1 compare:s2 options: NSCaseInsensitiveSearch];
    NSString *s1 = @"123456";
    NSString *s2 = @"1234567";
    // 根据比较参数进行比较
    NSComparisonResult result = [s1 compare:s2 options: NSCaseInsensitiveSearch];
    /*
     比较结果:
     enum {
        NSOrderedAscending = -1, // 升序排列
        NSOrderedSame,           // 相同
        NSOrderedDescending      // 降序排列
     };
     typedef NSInteger NSComparisonResult;

     比较选项:
     typedef enum NSStringCompareOptions : NSUInteger {
        NSCaseInsensitiveSearch = 1, // 忽略大小写
        NSLiteralSearch = 2,         // 逐字比较,类似strcmp
        NSBackwardsSearch = 4,       // 倒叙比较
        NSAnchoredSearch = 8,
        NSNumericSearch = 64,
        NSDiacriticInsensitiveSearch = 128,
        NSWidthInsensitiveSearch = 256,
        NSForcedOrderingSearch = 512,
        NSRegularExpressionSearch = 1024
     } NSStringCompareOptions;

     多个选项同时使用 , | 分隔。如:NSCaseInsensitiveSearch | NSLiteralSearch
     */
截取
    NSString *str = @"123456789";
    // 从给定索引截取到最后
    NSLog(@"%@", [str substringFromIndex: 2]); // 3456789
    // 从开始到给定索引
    NSLog(@"%@", [str substringToIndex: 2]); // 12
    // 截取指定范围
    NSLog(@"%@", [str substringWithRange: NSMakeRange(0, 3)]); // 123
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值