Objective-C---3---NSString的常用方法
发布日期:2022-02-08 18:03:21 浏览次数:25 分类:技术文章

本文共 7626 字,大约阅读时间需要 25 分钟。

1. NSString:

OC有自己的字符串类,

常规类的创建:NSString *str = [[NSString alloc] init];

1.1  创建的方法:

//字符串创建一:        NSString *p = @"葵花宝典";        NSLog(@"%@", p);                //字符串创建二:        NSString *str = [[NSString alloc] initWithString:p];        NSLog(@"%@", str);                //字符串创建三:        NSString *str1 = [[NSString alloc] initWithUTF8String:"切记:这个是C的字符串,所以不用加@"];  // 不用加@,因为这写的是 const char*        NSLog(@"%@", str1);                //字符串创建四:        NSString *str2 = [[NSString alloc] initWithFormat:@"最常用的字符串%c", '0'];        NSLog(@"%@",str2);                [str1 release];  //  用一个alloc,就用一个release释放        [str release];        [str2 release];
1.2  创建临时字符串:

临时字符串的创建没有使用alloc,所以不需要我们手动释放内存,它会自动释放

// 创建临时字符串1        NSString *str = @"OC-Hello world";                // 创建临时字符串2        NSString *str1 = [NSString stringWithUTF8String:"C语言"];        NSLog(@"%@", str1);                // 创建临时字符串3        NSString *str2 = [NSString stringWithFormat:@"便利构造器的%@  %c", @"方法", 'a'];        NSLog(@"%@", str2);                // 创建临时字符串4        NSString *str3 = [NSString stringWithString:str2];        NSLog(@"%@", str3);

1.3  initWithFormat和stringWithFormat:

这两个方法中的第一个参数中的%@,%d,%c....会用你后面写的相对应的类型的东西替换

1.4  字符串比较大小:

//  比较字符串是否相等- (BOOL)isEqualToString:(NSString *)aString;-------->比较是否相等  记得返回值是BOOL型//  比较字符串的大小- (NSComparisonResult)compare:(NSString *)string;  // 返回值类型是NSComparisonResult  并不是BOOL型/*  NSComparisonResult型是枚举类型typedef NS_ENUM(NSInteger, NSComparisonResult) {NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending};小于-----   -1等于-----   0大于-----   1*/// 字符串比较NSString *str1 = @"hdudi";NSString *str2 = @"hdudi";if (str1 == str2) {                NSLog(@"str1 = str2");            }else {                NSLog(@"not same");            }//  结果是相等,  是因为这个比较的是字符串常量的地址, str1和str2指向的是同一个字符串,所以地址是一样的

#pragma mark---------1.字符串的方法        // 字符串比较         {        NSString *str1 = @"hello";        NSString *str2 = @"helloworld";        BOOL result = [str1 isEqualToString:str2];        NSLog(@"%d", result);                NSComparisonResult res = [str1 compare:str2];        if (res == NSOrderedAscending) {            NSLog(@"str1 < str2");        }        if (res == NSOrderedDescending) {            NSLog(@"str1 > str2");        }        if (res == NSOrderedSame) {            NSLog(@"str1 = str2");        }        }

1.5 字符串查找方法:

#pragma mark------------ 字符串查找        {            NSString *str3 = @"Nevermid I will find someone like you";            NSString *subStr3 = @"someone";                        NSRange range = [str3 rangeOfString:subStr3];            NSLog(@"location = %lu, length = %lu", range.location, range.length);//   NSNotFound --------长整型的最大值 }

1.6 字符串提取方法:

#pragma mark---------------字符串提取:------三种            NSString *str4 = @"01234567890";               // 1. To是从头开始,截取n个长度的字符            NSString *subStr4 = [str4 substringToIndex:6];            NSLog(@"%@", subStr4);               // 2. From是从n开始截取,一直到最后            NSString *subStr5 = [str4 substringFromIndex:5];            NSLog(@"%@", subStr5);               // 3. Range是从第a个开始截取,截取b个长度的字符:a和b是NSMakeRange的两个长度            NSString *subStr6 = [str4 substringWithRange:NSMakeRange(4, 3)];            NSLog(@"%@", subStr6);           NSString *str = @"http://www.lanou3g.com";   // 1.从xx位置开始到最后结束            NSString *sub1 = [str substringFromIndex:7];            NSLog(@"%@", sub1);               // 2.从开始位置到xx结束            NSString *sub2 = [str substringToIndex:7];            NSLog(@"%@", sub2);               // 3.获取一个范围            NSString *sub3 = [str substringWithRange:NSMakeRange(11, 7)];            NSLog(@"%@", sub3);

1.7 字符串长度及拼接:

#pragma mark------------字符串的长度         {            NSString *str = [NSString stringWithFormat:@"you need cry dear!"];            NSLog(@"%lu", [str length]);        }        #pragma mark-------------字符串拼接         {            NSString *str = [NSString stringWithFormat:@"you need cry dear!"];            NSLog(@"%@", [str stringByAppendingString:@"hahahah"]);                    }

1.8 字符串替换-----不可变字符串的替换:

#pragma mark-----------用一个字符串替换指定范围内的一堆字符            //将lanou3g用baidu替换            NSString *str = @"http://www.lanou3g.com";            NSString *s1 = [str stringByReplacingCharactersInRange:NSMakeRange(11, 7) withString:@"baidu"];            NSLog(@"%@", s1);            #pragma mark-----------用字符串替换字符串            // 将空格去掉            NSString *str1 = @"sgsh jjj yy";            NSString *s = [str1 stringByReplacingOccurrencesOfString:@" " withString:@""];            NSLog(@"%@", s);

1.9 检测字符串前缀和后缀:

#pragma mark--------检测字符串前缀(hasPrefix)和后缀(hasSuffix)        {            // 判断前缀:网址是否合法:http://   https://            NSString *str1 = @"http://www.baidu.com";            if ([str1 hasPrefix:@"http://"] || [str1 hasPrefix:@"https://"]) {                NSLog(@"合法");            }else                NSLog(@"不合法");                        // 判断后缀:例如图片后缀:jpg png gif jpeg            NSString *imgName = @"balabala.jpg";            if ([imgName hasSuffix:@".jpg"] || [imgName hasSuffix:@".png"] || [imgName hasSuffix:@".gif"] || [imgName hasSuffix:@".jpeg"]) {                NSLog(@"合法图片后缀");            }else                NSLog(@"不合法");                        // 练习:判断是否为word文件            NSString *wordName = @"OC.doc";            if ([wordName hasSuffix:@".doc"]) {                NSLog(@"是文件");            }else                NSLog(@"不是文件");        }
1.10 可变字符串:

NSMutableString是NSString的子类,创建动态可变字符串,  NSMutableString继承NSString的方法:

不可变字符串的方法以string开头,有返回值,

可变字符串的方法无返回值,对字符串本身进行修改

NSMutableString在使用时最好不要直接赋值(=@“”),因为这个NSMutableString是可变字符串,他的内容应该都是append进去的

 

#pragma mark----------  可变字符串 NSMutableString         {            // 可变字符串继承于NSString不可变字符串的方法。            // NSMutableString 可以使用父类的方法,以下除外:            // NSMutableString *str = @"不能用";                //  创建:            NSMutableString  *str = [[NSMutableString alloc] init];            [str setString:@"hello ya "];            NSLog(@"%@", str);                // 增加/拼接            [str appendString:@"friend "];            NSLog(@"%@", str);                        [str appendFormat:@"%d", 87];  // 格式化拼接            NSLog(@"%@", str);                             //  插入,按指定的位置:atIndex            [str insertString:@"Oh " atIndex:0];            NSLog(@"%@", str);                             //  删除 从指定位置开始,按指定的长度删除            NSRange range = {3, 5};            [str deleteCharactersInRange:range];            NSLog(@"%@",str);                              //  从指定位置开始,按指定的长度替换,可能会覆盖你之前的内容,是替换,不是插入            [str replaceCharactersInRange:NSMakeRange(3, 5) withString:@"HELLO"];            NSLog(@"%@", str);                        [str release];        }

1.11   例题:

{            /*             给定一个图片文件名,判断字符串中是否以“png”结尾,如果是就替换成“jpg”,如果不是,就拼接”.jpg ”。             */                        //  可变字符串            NSMutableString *str = [[NSMutableString alloc] init];            [str setString:@"hgfhfjfkf.png"];            if ([str hasSuffix:@".png"]) {                [str replaceCharactersInRange:NSMakeRange([str length] - 4, 4) withString:@".jpg"];                NSLog(@"%@",str);            }else{                [str appendString:@".jpg"];                NSLog(@"%@",str);            }                                                //  不可变字符串            NSString *str1 = @"hgfhfjfkf.png";            if ([str1 hasSuffix:@".png"]) {                            NSLog(@"%@", [str1 stringByReplacingOccurrencesOfString:@".png" withString:@".jpg"]);            }else{                                NSLog(@"%@", [str1 stringByAppendingString:@".jpg"]);            }                                }

转载地址:https://blog.csdn.net/Evelynzn/article/details/48728617 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Objective-C---2---初始化、便利构造器
下一篇:Objective-C---4---数组和值对象

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月06日 07时20分12秒