【iOS】Foundation框架 字符串

字符串就是一连串的字符序列,OC中有两种字符串:NSString和NSMutableString;其中NSString代表字符序列不可变的字符串,而NSMutableString代表字符序列可变的字符串。

创建字符串

NSString的功能

参考NSString的文档NSString大致包括以下功能:

  • 创建字符串:创建字符串既可使用以init开头的实例方法,也可使用以string开头的类方法,当然也可以直接使用@""的形式给出字符串直接量。
  • 读取文件或网络URL来初始化字符串。
  • 将字符串内容写入文件或URL
  • 获取字符串长度,既可获取字符串内包括的字符个数,也可获取字符串包括的字节个数。
  • 获取字符串中的字符或字节,既可获取指定位置的字符,也可获取指定范围的字符。
  • 获取字符串对应的C风格字符串
  • 连接字符串
  • 分隔字符串
  • 查找字符串内指定的字符和字串
  • 替换字符串
  • 比较字符串
  • 字符串大小比较
  • 对字符串中的字符进行大小写转换
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    
    
    @autoreleasepool {
    
    
        unichar data[6] = {
    
    97, 98, 99, 100, 101, 102};
        //使用Unicodez数值数组来初始化字符串
        NSString* str = [[NSString alloc] initWithCharacters:data length:6];
        NSLog(@"%@" , str);
        char* cstr = "Hello, ios!";
        //将C风格的字符串c转换为NSString对象
        NSString* str2 = [NSString stringWithUTF8String:cstr];
        NSLog(@"%@" , str2);
        //将字符串写入指定文件
        [str2 writeToFile:@"/Users/haoqianbiao/Desktop/test1/practice/字符串/字符串/myFile.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
        //读取文件内容,用文件内容初始化字符串
        NSString* str3 = [NSString stringWithContentsOfFile:@"NSStringTest.m" encoding:NSUTF8StringEncoding error:nil];
        NSLog(@"%@" , str3);
    }
    return 0;
}

NSString的常用功能

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    
    
    @autoreleasepool {
    
    
        NSString* str = @"Hello";
        NSString* book = @"《疯狂iOS讲义》";
        //在str后面追加固定的字符串
        //原来的字符串对象并不改变,只是将新生成的字符串重新赋给str指针变量
        str = [str stringByAppendingString:@", iOS!"];
        NSLog(@"%@" , str);
        //获取字符串对应的C风格字符串
        const char* cstr = [str UTF8String];
        NSLog(@"获取的zC字符串:%s" , cstr);
        //在str后面追加带变量的字符串
        //原来的字符串对象并不改变,只是将新生成的字符串重新赋给str指针变量
        str = [str stringByAppendingFormat:@"%@是一本非常不错的图书", book];
        NSLog(@"%@" , str);
        NSLog(@"str的字符个数为:%lu" , [str length]);
        NSLog(@"str按字符UTF-8字符集解码后字节数为:%lu" , [str lengthOfBytesUsingEncoding:NSUTF8StringEncoding]);
        //获取str的前10个字符组成的字符串
        NSString* s1 = [str substringToIndex:10];
        NSLog(@"%@" , s1);
        //获取str从第五个字符开始,与后面字符组成的字符串
        NSString* s2 = [str substringFromIndex:5];
        NSLog(@"%@" , s2);
        //获取str从第五个字符开始到15,与后面字符组成的字符串
        NSString* s3 = [str substringWithRange:NSMakeRange(5, 15)];
        NSLog(@"%@", s3);
        //获取iOS在str中出现的位置
        NSRange pos = [str rangeOfString:@"iOS"];
        NSLog(@"iOS在str中出现的开始位置:%ld, 长度为:%ld", pos.location, pos.length);
        //将str的所有字符转为大写
        str = [str uppercaseString];
        NSLog(@"%@" , str);
        
    }
    return 0;
}

效果:
在这里插入图片描述

可变字符串(NSMutableString)

NSString类是不可变的类,即一旦NSString对象被创建,包含在这个对象中的字符序列是不可被改变的,直至这个对象被销毁。
NSMutableString对象则代表一个字符序列可变的字符串,而且NSMutableString是NSString的子类,因此前面介绍的NSString所包含的方法,NSMutableString都可以直接使用,NSMutableString对象也可以直接当成NSString对象使用。

示例:下面程序示范了使用NSMutableString来改变字符序列:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    
    
    @autoreleasepool {
    
    
        NSString* book = @"《疯狂iOS讲义》";
        //创建一个NSMutableString对象
        NSMutableString* str = [NSMutableString stringWithString:@"Hello"];
        //追加固定字符串
        //字符串所包含的字符序列本身发生了改变,因此无需重新赋值
        [str appendString:@",iOS!"];
        NSLog(@"%@" , str);
        //追加带变量的字符串
        //字符串所包含的字符序列本身发生了改变,因此无需重新赋值
        [str appendFormat:@"%@是一本非常不错的图书。" , book];
        NSLog(@"%@" , str);
        //在指定位置插入字符串
        //字符串所包含的字符序列本身发生了改变,因此无需重新赋值
        [str insertString:@"fkit.org" atIndex:6];
        NSLog(@"%@" , str);
        //删除从位置6到位置12的所有字符
        [str deleteCharactersInRange:NSMakeRange(6, 12)];
        NSLog(@"%@" , str);
        //将从位置6到位置9的字符串换成Objetive-C
        [str replaceCharactersInRange:NSMakeRange(6, 9) withString:@"Objetive-C"];
        NSLog(@"%@" , str);
        
    }
    return 0;

效果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_50990189/article/details/117596702
今日推荐