NSString

步博厚
2023-12-01
#import <Foundation/Foundation.h>

void stringCreate(){
    //C语言中的字符串
    //char * s="hello";
    NSString *str=@"this is a NSString";
    NSLog(@"%@\n",str);

    NSString *str1=[[[NSString alloc] init] autorelease];
    str1=@"this is also a string";

    NSString *str2=[[[NSString alloc] initWithString:@"this is a string"] autorelease];

    //将C语言的字符串转化成OC语言的字符串
    NSString * str3=[[[NSString alloc] initWithUTF8String:"this is a C string"] autorelease];

    //静态方法不需要我们管理内存
    str3=[NSString stringWithString:@"new str"];

    NSString *str4=[[[NSString alloc] initWithFormat:@"年龄:%i,身高:%.2f",20,172.2f] autorelease];
    //静态方法不需要我们管理内存
    str4=[NSString stringWithFormat:@"xin 年龄:%i,身高:%.2f",20,172.2f];

    NSLog(@"%@\n,%@\n,%@\n,%@\n",str1,str2,str3,str4);
}
void test(){
    //从文件中读取数据
    NSString *path=@"/Users/dingxiaowei/Desktop/test.txt";
    NSError *error;
    //这个方法已经过期,不能读取中文
//    NSString *strText=[NSString stringWithContentsOfFile:path];
    //指定字符串编码为UTF8  encoding:NSUTF8StringEncoding     其他的编码格式:kCFStringEncodingGB_18030_2000
    NSString *strText=[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
       if (error==nil) {
        NSLog(@"文件读取成功:%@",strText);
    }
    else{
        NSLog(@"文件读失败:%@",error);
    }
//    NSString *str5=[NSString stringwith];
}
//通过url的方式来读取文件里面的数据
void test4(){
    //通过URL来读取本地硬盘上的文件
    NSURL *url=[NSURL URLWithString:@"file///Users/dingxiaowei/Desktop/test.txt"];
    NSString *str=[NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
    NSLog(@"文件是:%@",str);



    //读取远程服务器上文件
    NSURL *url2=[NSURL URLWithString:@"http://www.baidu.com"];
    NSString *str2=[NSString stringWithContentsOfURL:url2 encoding:NSUTF8StringEncoding error:nil];
    NSLog(@"百度上的文件是:%@",str2);
}
//测试通过在主函数中调用该方法改变str的值,形参和实参的问题
void test1(NSString **str1){
    (*str1)=@"123";  //相当于主函数中str=@"123";
    
}

void test2(int *p){
    *p=9;//相当于主函数中a=9
}

#pragma mark 字符串的导出
void stringExport(NSString *str){
//    NSString *str=@"123";
    //如果文件不存在他会帮我们自动创建
    NSString *path=@"/Users/dingxiaowei/Desktop/test1.txt";
    NSError *error;
    [str writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:&error];
    if(error){
        NSLog(@"写入失败:%@",[error localizeDescription]);
    }
    else{
        NSLog(@"写入文件成功");
        
    }
}

#pragma mark 字符串的取出
void stringImport(){
    //从文件中读取数据
    NSString *path=@"/Users/dingxiaowei/Desktop/test.txt";
    NSError *error;
    //这个方法已经过期,不能读取中文
    //    NSString *strText=[NSString stringWithContentsOfFile:path];
    //指定字符串编码为UTF8  encoding:NSUTF8StringEncoding     其他的编码格式:kCFStringEncodingGB_18030_2000
    NSString *strText=[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
    if (error==nil) {
        NSLog(@"文件读取成功:%@",strText);
    }
    else{
        NSLog(@"文件读失败:%@",error);
    }

//    //通过URL来读取本地硬盘上的文件
//    NSURL *url=[NSURL URLWithString:@"file///Users/dingxiaowei/Desktop/test.txt"];
//    NSError *error;
//    NSString *str=[NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];
//    if (error) {
//         NSLog(@"文件读取失败:%@",error);
//    }
//    else{
//        NSLog(@"文件读成功:%@",str);
//    }

    
}
#pragma mark - 字符串的常用方法
void stringTest(){
    //字符串大小写转化
    NSString * strnantong=@"NanTong";
    NSString * strhaian=@"haiAn";
    NSLog(@"大写:%@",[strnantong uppercaseString]);  //转换大写
    NSLog(@"小写:%@",[strhaian lowercaseString]);  //转化成小写
    NSLog(@"首字母大写:%@",[@"aGE" capitalizedString]);//首字母大写

    //字符串比较
    BOOL *result=[@"abc" isEqualToString:@"ABC"];
    NSLog(@"这两个字符串是否相等:%i",result); //YES:1  NO:0
    //判断两个字符串的大小
    NSComparisonResult result2=[@"abc" compare:@"Abc"];//直接比较,小写字母ASCII码大于大写的
    //NSComparisonResult result2=[@"abc" caseInsensitiveCompare:@"Abc"];//忽略大小写比较
    if(result2==NSOrderedSame){
        NSLog(@"两边相等");
    }
    else if(result2==NSOrderedAscending){
        NSLog(@"右边>左边");
    }
    else if (result2==NSOrderedDescending){
        NSLog(@"左边>右边");
    }

    //字符串的搜索
    NSString*str1=@"123453456.txt";
    NSLog(@"是否以12开头:%i",[str1 hasPrefix:@"12"]);  //OC中参数都是以:开始的
    NSLog(@"是否是txt结尾:%i",[str1 hasSuffix:@".txt"]);
    //判断一个字符串在另一个字符串的位置   如果没有的话 那location就是一个非常大的数字long_max数 length是0
    NSRange range=[str1 rangeOfString:@"345"];  //返回值是一个range类型{location,length} //位置和长度
    NSLog(@"%@",NSStringFromRange(range));   //打印这个range
    NSRange range1=[str1 rangeOfString:@"345" options:NSBackwardsSearch];//从尾部开始搜索字符串 后面再加一个range参数就是指从指定位置开始搜索
    NSLog(@"%@",NSStringFromRange(range1));

    //字符串的截取
    NSString *str2=@"123456789";
    NSString *newStr=[str2 substringFromIndex:2];
    NSLog(@"新截取的字符串是:%@",newStr);
    //从头部开始截取,知道索引结束
    newStr=[str2 substringToIndex:3];
    NSLog(@"从头部开始截取到索引之前的字符串是:%@",newStr);
    //截取局部
    NSRange range2=NSMakeRange(2, 3);
    newStr=[str2 substringWithRange:range2];
    NSLog(@"从头部开始截取到索引之前的字符串是:%@",newStr);

    //切割字符串
    NSString *list=@"1|2|3|4|5";
    NSArray *array=[list componentsSeparatedByString:@"|"];
    NSLog(@"集合中的元素是:%@",array);
    NSLog(@"集合中第二个元素是:%@",array[1]);//取出第2个元素
    NSString *str3=[array objectAtIndex:2];//另外一种获取第几个对象的方法
    NSLog(@"集合中第三个元素是:%@",str3);
}
#pragma mark - 与路径相关的方法
void pathTest(){
    //快速创建一个自动释放的数组
    NSMutableArray *components=[NSMutableArray array];
    [components addObject:@"chenli"];
    [components addObject:@"dingxiaowei"];
    [components addObject:@"jiangke"];
    //将数组中所有的字符串拼接成一个路径
    //不管后面对path怎么操作  path始终不变  NSString不可变
    NSString *path=[NSString pathWithComponents:components];
    NSLog(@"%@",path);
    //将路径分解成数组
    NSArray *arr=[path pathComponents];
    NSLog(@"%@",arr);
    //判断是否为绝对路径 //就等于判断路径前面是否由反斜杠 如果有则是,如果没由则不是
    NSLog(@"%i",[path isAbsolutePath]);
    NSLog(@"找出最后一个路径:%@",[path lastPathComponent]);
    NSLog(@"删除最后一节路径:%@",[path stringByDeletingLastPathComponent]);
    NSLog(@"在最后添加一节路径:%@",[path stringByAppendingPathComponent:@"abc"]);
}
#pragma mark - 文件拓展名处理
void extension(){
    NSString *str=@"test.txt";
    NSLog(@"文件的拓展名:%@",[str pathExtension]);
    NSLog(@"添加拓展名:%@",[str stringByAppendingPathExtension:@"mp3"]);
    NSLog(@"删除拓展名:%@",[str stringByDeletingPathExtension]);
}
#pragma mark - 其他
void other(){
    NSString *str=@"1";
    int a=[str intValue];
    NSLog(@"%i",a);

    //计算字符串的字数,不是计算字符数,一个中文占2-3个字符
    NSLog(@"字数:%zi",[@"我是小丁abc" length]);  //length返回的是无符号整形数

    unichar c=[@"abc" characterAtIndex:0];  //unichar返回类型是unsigned short
    NSLog(@"第一个字符是:%c",c);

    //返回C语言中的字符串
    const char * c1=[@"abc" UTF8String];  //const表明定义的变量是一个常量,以后不能对他进行操作
    NSLog(@"将OC中字符串转化成C中字符串输出:%s",c1);//打印C语言中的字符串用%s
    
}
#pragma mark - 主函数
int main(int argc, const char * argv[])
{

    @autoreleasepool {

//        //形参和实参的问题
//        //测试test1
//        NSString *str=@"456";
//        test1(&str);
//        NSLog(@"%@",str);
//
//
//        //测试test2
//        int a=10;
//        test2(&a);
//        NSLog(@"a=%i",a);
//
//        //通过path来读取文件
//        test();
//        //通过URL来读取
//        test4();


        //写入文件
        stringExport(@"234ding小未");
        //取出文件
        stringImport();
        //测试字符串常用方法
        stringTest();
        //路径测试
        pathTest();
        //文件拓展名
        extension();
        //其他字符串处理
        other();
        
    }
    return 0;
}#import <Foundation/Foundation.h>

void stringCreate(){
    //C语言中的字符串
    //char * s="hello";
    NSString *str=@"this is a NSString";
    NSLog(@"%@\n",str);

    NSString *str1=[[[NSString alloc] init] autorelease];
    str1=@"this is also a string";

    NSString *str2=[[[NSString alloc] initWithString:@"this is a string"] autorelease];

    //将C语言的字符串转化成OC语言的字符串
    NSString * str3=[[[NSString alloc] initWithUTF8String:"this is a C string"] autorelease];

    //静态方法不需要我们管理内存
    str3=[NSString stringWithString:@"new str"];

    NSString *str4=[[[NSString alloc] initWithFormat:@"年龄:%i,身高:%.2f",20,172.2f] autorelease];
    //静态方法不需要我们管理内存
    str4=[NSString stringWithFormat:@"xin 年龄:%i,身高:%.2f",20,172.2f];

    NSLog(@"%@\n,%@\n,%@\n,%@\n",str1,str2,str3,str4);
}
void test(){
    //从文件中读取数据
    NSString *path=@"/Users/dingxiaowei/Desktop/test.txt";
    NSError *error;
    //这个方法已经过期,不能读取中文
//    NSString *strText=[NSString stringWithContentsOfFile:path];
    //指定字符串编码为UTF8  encoding:NSUTF8StringEncoding     其他的编码格式:kCFStringEncodingGB_18030_2000
    NSString *strText=[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
       if (error==nil) {
        NSLog(@"文件读取成功:%@",strText);
    }
    else{
        NSLog(@"文件读失败:%@",error);
    }
//    NSString *str5=[NSString stringwith];
}
//通过url的方式来读取文件里面的数据
void test4(){
    //通过URL来读取本地硬盘上的文件
    NSURL *url=[NSURL URLWithString:@"file///Users/dingxiaowei/Desktop/test.txt"];
    NSString *str=[NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
    NSLog(@"文件是:%@",str);



    //读取远程服务器上文件
    NSURL *url2=[NSURL URLWithString:@"http://www.baidu.com"];
    NSString *str2=[NSString stringWithContentsOfURL:url2 encoding:NSUTF8StringEncoding error:nil];
    NSLog(@"百度上的文件是:%@",str2);
}
//测试通过在主函数中调用该方法改变str的值,形参和实参的问题
void test1(NSString **str1){
    (*str1)=@"123";  //相当于主函数中str=@"123";
    
}

void test2(int *p){
    *p=9;//相当于主函数中a=9
}

#pragma mark 字符串的导出
void stringExport(NSString *str){
//    NSString *str=@"123";
    //如果文件不存在他会帮我们自动创建
    NSString *path=@"/Users/dingxiaowei/Desktop/test1.txt";
    NSError *error;
    [str writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:&error];
    if(error){
        NSLog(@"写入失败:%@",[error localizeDescription]);
    }
    else{
        NSLog(@"写入文件成功");
        
    }
}

#pragma mark 字符串的取出
void stringImport(){
    //从文件中读取数据
    NSString *path=@"/Users/dingxiaowei/Desktop/test.txt";
    NSError *error;
    //这个方法已经过期,不能读取中文
    //    NSString *strText=[NSString stringWithContentsOfFile:path];
    //指定字符串编码为UTF8  encoding:NSUTF8StringEncoding     其他的编码格式:kCFStringEncodingGB_18030_2000
    NSString *strText=[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
    if (error==nil) {
        NSLog(@"文件读取成功:%@",strText);
    }
    else{
        NSLog(@"文件读失败:%@",error);
    }

//    //通过URL来读取本地硬盘上的文件
//    NSURL *url=[NSURL URLWithString:@"file///Users/dingxiaowei/Desktop/test.txt"];
//    NSError *error;
//    NSString *str=[NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];
//    if (error) {
//         NSLog(@"文件读取失败:%@",error);
//    }
//    else{
//        NSLog(@"文件读成功:%@",str);
//    }

    
}
#pragma mark - 字符串的常用方法
void stringTest(){
    //字符串大小写转化
    NSString * strnantong=@"NanTong";
    NSString * strhaian=@"haiAn";
    NSLog(@"大写:%@",[strnantong uppercaseString]);  //转换大写
    NSLog(@"小写:%@",[strhaian lowercaseString]);  //转化成小写
    NSLog(@"首字母大写:%@",[@"aGE" capitalizedString]);//首字母大写

    //字符串比较
    BOOL *result=[@"abc" isEqualToString:@"ABC"];
    NSLog(@"这两个字符串是否相等:%i",result); //YES:1  NO:0
    //判断两个字符串的大小
    NSComparisonResult result2=[@"abc" compare:@"Abc"];//直接比较,小写字母ASCII码大于大写的
    //NSComparisonResult result2=[@"abc" caseInsensitiveCompare:@"Abc"];//忽略大小写比较
    if(result2==NSOrderedSame){
        NSLog(@"两边相等");
    }
    else if(result2==NSOrderedAscending){
        NSLog(@"右边>左边");
    }
    else if (result2==NSOrderedDescending){
        NSLog(@"左边>右边");
    }

    //字符串的搜索
    NSString*str1=@"123453456.txt";
    NSLog(@"是否以12开头:%i",[str1 hasPrefix:@"12"]);  //OC中参数都是以:开始的
    NSLog(@"是否是txt结尾:%i",[str1 hasSuffix:@".txt"]);
    //判断一个字符串在另一个字符串的位置   如果没有的话 那location就是一个非常大的数字long_max数 length是0
    NSRange range=[str1 rangeOfString:@"345"];  //返回值是一个range类型{location,length} //位置和长度
    NSLog(@"%@",NSStringFromRange(range));   //打印这个range
    NSRange range1=[str1 rangeOfString:@"345" options:NSBackwardsSearch];//从尾部开始搜索字符串 后面再加一个range参数就是指从指定位置开始搜索
    NSLog(@"%@",NSStringFromRange(range1));

    //字符串的截取
    NSString *str2=@"123456789";
    NSString *newStr=[str2 substringFromIndex:2];
    NSLog(@"新截取的字符串是:%@",newStr);
    //从头部开始截取,知道索引结束
    newStr=[str2 substringToIndex:3];
    NSLog(@"从头部开始截取到索引之前的字符串是:%@",newStr);
    //截取局部
    NSRange range2=NSMakeRange(2, 3);
    newStr=[str2 substringWithRange:range2];
    NSLog(@"从头部开始截取到索引之前的字符串是:%@",newStr);

    //切割字符串
    NSString *list=@"1|2|3|4|5";
    NSArray *array=[list componentsSeparatedByString:@"|"];
    NSLog(@"集合中的元素是:%@",array);
    NSLog(@"集合中第二个元素是:%@",array[1]);//取出第2个元素
    NSString *str3=[array objectAtIndex:2];//另外一种获取第几个对象的方法
    NSLog(@"集合中第三个元素是:%@",str3);
}
#pragma mark - 与路径相关的方法
void pathTest(){
    //快速创建一个自动释放的数组
    NSMutableArray *components=[NSMutableArray array];
    [components addObject:@"chenli"];
    [components addObject:@"dingxiaowei"];
    [components addObject:@"jiangke"];
    //将数组中所有的字符串拼接成一个路径
    //不管后面对path怎么操作  path始终不变  NSString不可变
    NSString *path=[NSString pathWithComponents:components];
    NSLog(@"%@",path);
    //将路径分解成数组
    NSArray *arr=[path pathComponents];
    NSLog(@"%@",arr);
    //判断是否为绝对路径 //就等于判断路径前面是否由反斜杠 如果有则是,如果没由则不是
    NSLog(@"%i",[path isAbsolutePath]);
    NSLog(@"找出最后一个路径:%@",[path lastPathComponent]);
    NSLog(@"删除最后一节路径:%@",[path stringByDeletingLastPathComponent]);
    NSLog(@"在最后添加一节路径:%@",[path stringByAppendingPathComponent:@"abc"]);
}
#pragma mark - 文件拓展名处理
void extension(){
    NSString *str=@"test.txt";
    NSLog(@"文件的拓展名:%@",[str pathExtension]);
    NSLog(@"添加拓展名:%@",[str stringByAppendingPathExtension:@"mp3"]);
    NSLog(@"删除拓展名:%@",[str stringByDeletingPathExtension]);
}
#pragma mark - 其他
void other(){
    NSString *str=@"1";
    int a=[str intValue];
    NSLog(@"%i",a);

    //计算字符串的字数,不是计算字符数,一个中文占2-3个字符
    NSLog(@"字数:%zi",[@"我是小丁abc" length]);  //length返回的是无符号整形数

    unichar c=[@"abc" characterAtIndex:0];  //unichar返回类型是unsigned short
    NSLog(@"第一个字符是:%c",c);

    //返回C语言中的字符串
    const char * c1=[@"abc" UTF8String];  //const表明定义的变量是一个常量,以后不能对他进行操作
    NSLog(@"将OC中字符串转化成C中字符串输出:%s",c1);//打印C语言中的字符串用%s
    
}
#pragma mark - 主函数
int main(int argc, const char * argv[])
{

    @autoreleasepool {

//        //形参和实参的问题
//        //测试test1
//        NSString *str=@"456";
//        test1(&str);
//        NSLog(@"%@",str);
//
//
//        //测试test2
//        int a=10;
//        test2(&a);
//        NSLog(@"a=%i",a);
//
//        //通过path来读取文件
//        test();
//        //通过URL来读取
//        test4();


        //写入文件
        stringExport(@"234ding小未");
        //取出文件
        stringImport();
        //测试字符串常用方法
        stringTest();
        //路径测试
        pathTest();
        //文件拓展名
        extension();
        //其他字符串处理
        other();
        
    }
    return 0;
}

 类似资料: