OC读书笔记——NSString字符串

前言

Objective-c中有两种字符串,NSString和NSMutable String,其中,他俩的区别是NSString是不可以改变字符序列的字符串,NSSMutableString是可以改变字符序列的字符串。

NSString字符串

oc为NSString字符串提供了大量的方法,他的主要功能如下:
在这里插入图片描述

如何创建NSString对象

在oc中创建NSString对象的方式有很多种,下面列举几种方法。

  1. 直接利用@“”赋值给NSString对象
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSString* str = @"欢迎来到对抗路!";
        NSLog(@"%@" , str);       
    }
    return 0;
}

2.利用NSString自己提供的初始化方法。
代码如下:

NSString* str1 = [[NSString alloc] initWithFormat:@"欢迎来到对抗路!"];

这两种是最简单的方法,还有一些其他方法,例如将c风格的字符串转化为NSString对象,利用 Unicode数组转换字符串等等,这里就简单举两个例子

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        unichar data[6] = {97, 98, 99, 101, 102, 103};
        // 使用Unicode数值数组初始化字符串
        NSString* str = [[NSString alloc] initWithCharacters:data length:6];
        NSLog(@"%@" , str);
        char *cstr = "hello, iOS!";
        // 将C风格的字符串转化为NSString对象
        NSString* str2 = [NSString stringWithUTF8String:cstr];
        NSLog(@"%@" , str2);
        
        
    }
    return 0;
}

NSString的常用功能

一些基本的方法如下,详情在代码中注释。

//
//  main.m
//  NStry
//
//  Created by 差不多先生 on 2021/6/5.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSString* str = @"Hello";
        NSString* book = @"高等数学";
        // 方法一:在str后面追加字符串
        // 原来的字符串对象不改变,只是将新生成的字符串赋给str指针变量
        str = [str stringByAppendingString:@",iOS!"];
        NSLog(@"%@" , str);
        // 方法二转化为c风格字符串
        const char *qq = [str UTF8String];
        NSLog(@"获取的c字符串为: %s" , qq);
        // 方法三:追加带变量的字符串
        str = [str stringByAppendingFormat:@"%@是一本非常不错的书." , book];
        NSLog(@"%@" , str);
        // 方法四:获取字符的个数
        NSLog(@"str的字符个数为:%lu" , [str length]);
        // 方法五:将字符串转化为大写
        str = [str uppercaseString];
        NSLog(@"%@" , str);
        
    }
    return 0;
}

NSString字符串的一大便利之处,就是可以截取从任意位置开始到任意位置结束的字符串,代码实现如下所示:

 //获取前n个字符组成的字符串这里是10
        NSString* s1 = [str substringToIndex:10];
        //获取str从第n个字符开始,与后面所有字符组成的字符串
        NSString* s2 = [str substringWithRange:NSMakeRange(5, 15)];
        //获取从当前开始与之后所有的字符
        NSString* s3 = [str substringFromIndex:5];
        // 获取iOS在str的位置
        NSRange pos = [str rangeOfString:@"iOS"];
        NSLog(@"iOS出现的位置:%ld, 长度为:%ld" , pos.location , pos.length);
        

代码中的NSRange是一个结构体,有两个变量,分别代表了起始位置和长度,OC提供了NSMakeRange()函数来创建这个结构体。
最后是NSString字符串的三种类型:

  __NSCFConstString(常量字符串)

编译时常量,存储在常量池
1.@” “;
2.stringWithString 会出现警告,等同与方法一
3.CFSTR”…”
__NSCFString:
运行时创建的字符串。
存储在堆
NSString的一些方法,例如stringWithFormat:。
字母长度>9
特殊字符(ansii 之外)
汉字
字母含 q >7
__NSTaggedPointerString
将指针变量的内容放在了指针变量的内存地址中
其余情况。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值