Objective-C 【NSRange&字符串的截取和替换】

———————————————————————————————————————————
NSString NSRange的使用

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
//        首先明确NSRange是一个结构体类型(是表示范围的结构体类型)
//        typedef struct _NSRange {
//            NSUInteger location;//表示位置
//            NSUInteger length;//表示长度
//        } NSRange;
        
//        NSRange 对象的几种创建方式
        
//        ①直接对NSRange类型的实例对象赋值
        NSRange range1={3,4};
        NSLog(@"range1.location = %ld,range1.length = %ld",range1.location,range1.length);
        
//        ②先创建对象,后赋值
        NSRange range2;
        
        range2.location=5;
        range2.length=6;
        
        NSLog(@"range1.location = %ld,range1.length = %ld",range2.location,range2.length);
        
//        ③调用NSMakeRange方法赋值
        NSRange range3=NSMakeRange(11, 12);
        
        NSLog(@"range1.location = %ld,range1.length = %ld",range3.location,range3.length);
    }
    return 0;
}


———————————————————————————————————————————
NSString 字符串的截取和替换

#import <Foundation/Foundation.h>

void test1()
{
    //        字符串的截取
    //        ①从字符串的指定位置截取到字符串末尾(包含指定位置的字符,下标从0开始)
    NSString *str1=@"1234567890";
    NSString *newStr1=[str1 substringFromIndex:6];
    NSLog(@"newStr1 = %@",newStr1);
    
    //        ②从字符串开头截取到字符串的指定位置(不包含指定位置的字符,下标从0开始)
    NSString *str2=@"abcdefghijklmnopq";
    NSString *newStr2=[str2 substringToIndex:3];
    NSLog(@"newStr2 = %@",newStr2);
    
    //        ③从字符串的指定位置1 截取 指定长度
    NSString *str3=@"12312fsg34fav";
    NSRange range={3,6};//涉及到截取位置和长度,自然要用到NSRange了。所以定义一个NSRange类型的对象来设置位置和长度参数
    NSString *newStr3=[str3 substringWithRange:range];//再用substringWithRange函数调用我们创建好的NSRange类型的对象以完成截取
    NSLog(@"newStr3 = %@",newStr3);
}

void test2()
{
    //        小练习: 将下面标签内的字符串取出
    //        <itcast>王中尧</itcast>
    
    NSString *str=@"<itcast>王中尧</itcast>";
    
    NSRange range=NSMakeRange(8, 3);
    
    NSString *newStr=[str substringWithRange:range];
    
    NSLog(@"newStr = %@",newStr);
}

void test3()
{
    //        一个小小的拔高题目:(喜欢的读者可以试着做一下这个题目)
    //        统计一段话中,指定词组的个数。
    
    //        有一天,我问医生:“我为什么咳嗽?” 医生说:“你10岁的时候咳嗽吗?” 我说:“不咳嗽。” 医生又问:“你20岁的时候咳嗽吗?” 我说:“不咳嗽。” 医生又问:“你30岁的时候咳嗽吗?” 我说:“不咳嗽。” 医生说:“那你现在确实该咳嗽一下了!”
    
    //        统计上面这段话中 咳嗽 出现的次数
    
    NSString *str=@"有一天,我问医生:“我为什么咳嗽?” 医生说:“你10岁的时候咳嗽吗?” 我说:“不咳嗽。” 医生又问:“你20岁的时候咳嗽吗?” 我说:“不咳嗽。” 医生又问:“你30岁的时候咳嗽吗?” 我说:“不咳嗽。” 医生说:“那你现在确实该咳嗽一下了!”";
    
    int n=0;
    while ([str rangeOfString:@"咳嗽"].location!=NSNotFound) {
        //先在str中搜索指定字符串,如果字符串的位置可找到,那么说明str中存在一个指定字符串,所以要让n+1
        n++;
        str=[str substringFromIndex:[str rangeOfString:@"咳嗽"].location+2];
        //再在这里截取前一个制定字符串后(不包括前一个指定字符串,所以位置要+2)剩下字符串
        //位置+2,2正式“咳嗽”的字符串长度
    }
    NSLog(@"n = %d",n);
}
int main(int argc, const char * argv[]) {
    @autoreleasepool {
//        字符串的替换
//        这一部分知识很简单,只需要调用一个 对象方法 即可
//        stringByReplacingOccurrencesOfString:str1 withString:str2       这个方法是将某字符串中的 所有 str1 替换为 str2
        
//        ①将 <itcast>王中尧</itcast> 中的itcast替换为ios
        NSString *str=@"<itcast>王中尧</itcast>";
        
        str=[str stringByReplacingOccurrencesOfString:@"itcast" withString:@"ios"];
        
        NSLog(@"str = %@",str);
        
//        ②将 http:**  ios.itcast.cn  *ios*images*  content_25.jpg 中的 空格去掉,然后将 * 替换为 /
        NSString *str2=@"http:**  ios.itcast.cn  *ios*images*  content_25.jpg";
        
//        显然替换两次即可
        str2=[str2 stringByReplacingOccurrencesOfString:@" " withString:@""];//空 表示为 两个双引号之间什么都不写
        str2=[str2 stringByReplacingOccurrencesOfString:@"*" withString:@"/"];
        
        NSLog(@"str2 = %@",str2);
    }
    return 0;
}


———————————————————————————————————————————

猜你喜欢

转载自blog.csdn.net/Felicity294250051/article/details/48369813