关闭

【黑马程序员】OC-Foundation框架—NSString和NSRange

标签: Foundation框架iosocNSString
170人阅读 评论(0) 收藏 举报
分类:

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

一、NSString类介绍和基本使用


1、什么是NSString?

一个NSString对象就代表一个字符串(文字内容),一般称NSString为字符串类


2、格式化的方式

NSString *str = [NSString stringWithFormat:@“”]

NSString *str2 = [[NSString alloc] initWithFormat:””]


3.从文件中写入和读取

//
//  main.m
//  NSString的基本使用
//
//  Created by Brisinga on 15/11/17.
//  Copyright © 2015年 itcast. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //定义一个错误类
        NSError *error;
        //定义一个字符串
       NSString *str = @"abc";
        //写入文件
        [str writeToFile:@"a.txt" atomically:YES encoding:NSUTF8StringEncoding error:&error];
        if (error==nil) {
            NSLog(@"写入成功!");
        }
        //读取文件中的数据到字符串
        NSString *str2 = [NSString stringWithContentsOfFile:@"a.txt" encoding:NSUTF8StringEncoding error:&error];
        NSLog(@"%@",str2);
        
    }
    return 0;
}

4.掌握NSURL读取字符串


1.什么是URL?

统一资源定位符

URL是互联网上标准的地址

互联网上的每个资源都有一个唯一的URL,它包含的信息指出资源的位置

根据一个URL就能找到唯一的一个资源


2.URL的格式

基本URL包含协议、主机域名(服务器名称\ip地址)、路径


3.URL读写字符串


//
//  main.m
//  NSURL读写字符串
//
//  Created by Brisinga on 15/11/17.
//  Copyright © 2015年 itcast. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //定义一个字符串
        NSString *str = @"abcsd";
        //定义一个地址
        NSString *path = @"a.txt";
        //定义一个URL
        NSURL *url = [NSURL URLWithString:path];
        NSURL *url2 = [NSURL fileURLWithPath:path];
        //把字符串写入URL
        BOOL flag = [str writeToURL:url2 atomically:YES encoding:NSUTF8StringEncoding error:nil];
        if (flag) {
            NSLog(@"写入成功!");
        }
        //从url读取
        NSString *str3 = [NSString stringWithContentsOfURL:url2 encoding:NSUTF8StringEncoding error:nil];
        NSLog(@"%@",str3);
        
        
    }
    return 0;
}

5.NSString字符串比较


1.字符串比较函数

1)比较字符串大小


//  main.m
//  NSString字符串比较
//
//  Created by Brisinga on 15/11/17.
//  Copyright © 2015年 itcast. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //定义两个字符串
        NSString *str1 = @"abc";
        NSString *str2 = @"Bcd";
        //比较两个字符串大小
        NSComparisonResult result = [str1 compare:str2];
        switch (result) {
            case NSOrderedSame: //相同
                NSLog(@"相同");
                break;
            case NSOrderedAscending:  //小于
                NSLog(@"str1<str2");
                break;
            case NSOrderedDescending:  //大于
                NSLog(@"str1>str2");
                break;
            default:
                break;
        }
        //不区分大小写比较
        result = [str1 compare:str2 options:NSCaseInsensitiveSearch];
        switch (result) {
            case 1:
                NSLog(@"str1>str2");
                break;
            case -1:
                NSLog(@"str1<str2");
                break;
            case 0:
                NSLog(@"str1=str2");
                break;
                
            default:
                break;
        }
        
    }
    return 0;
}

2)判断两个字符串是否相等


//  main.m
//  判断两个字符串是否相等
//
//  Created by Brisinga on 15/11/17.
//  Copyright © 2015年 itcast. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //定义两个字符串
        NSString *str1 = @"abc";
        NSString *str2 = @"adbc";
        //判断两个字符串是否相等
        BOOL isEqual = [str1 isEqualToString:str2];
        if (isEqual) {   //若为真则相等
            NSLog(@"相等");
        }else{
            NSLog(@"不相等");
        }
    }
    return 0;
}

6.NSString前后缀检查及搜索


1)NSString前后缀检查

//
//  main.m
//  NSString前后缀检查
//
//  Created by Brisinga on 15/11/17.
//  Copyright © 2015年 itcast. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //定义连个字符串
        NSString *str1 = @"http://www.baidu.com";
        NSString *str2 = @"xxxxxx.jpg";
        //检测str1是否是一个网址
        if([str1 hasPrefix:@"http"]||[str1 hasPrefix:@"https"]){ //如果是http和https        开头
            NSLog(@"是一个网址");
        }else{
        
            NSLog(@"这不是一个网址");
        }
        
        //检测str2是否是一个图片
        if([str2 hasSuffix:@"jpg"]){
            NSLog(@"是一个图片");  //如果后缀是jpg则是图片
        }else{
            NSLog(@"不是一个图片");
        }
        
    }
    return 0;
}

2)字符串查找(containsString,rangeOfString)


//
//  main.m
//  字符串查找
//
//  Created by Brisinga on 15/11/17.
//  Copyright © 2015年 itcast. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //定义两个字符串
        NSString *str1 = @"1asdiun";
        NSString *str2 = @"asd";
//方法一:在ios7下会崩溃
        //在str1中查找str2
        if([str1 containsString:str2]){
        
            NSLog(@"存在%@",str2);
        }else{
            NSLog(@"不存在");
        }

//方法二:ios7下可以
        //查找str1中首次出现str2的位置
        NSRange range = [str1 rangeOfString:str2]; //NSRange是结构体
        if (range.location!=NSNotFound) {  //如果location不等于NSNotFound
            NSLog(@"位置:%lu,长度:%lu",range.location,range.length);
        }else{
            NSLog(@"没有找到");
        }
        
        
    }
    return 0;
}

7.字符串的截取和替换


//
//  main.m
//  字符串的截取和替换
//
//  Created by Brisinga on 15/11/17.
//  Copyright © 2015年 itcast. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //定义一个字符串
        NSString *str = @"www.baidu.com";
        //定义一个空字符串
        NSString *str2 = nil;
        //1)从xx位置开始,到最后结束
        
        str2 = [str substringFromIndex:4];
        NSLog(@"%@",str2);
        //2)从开始位置,到xx位置结束
        str2 = [str substringToIndex:3];
        NSLog(@"%@",str2);
        //3)截取一个范围
        str2 = [str substringWithRange:NSMakeRange(4, 5)];
        NSLog(@"%@",str2);
        
        //将标签内的字符串取出来 <itcast>传智播客</itcast>
        NSString *str3 = @"<itcast>传智播客</itcast>";
        //先查找>出现的位置
        NSUInteger location = [str3 rangeOfString:@">"].location+1;
        //查找长度
        NSUInteger len = [str3 rangeOfString:@"</"].location - location;
        //截取长度
        NSString *result = [str3 substringWithRange:NSMakeRange(location, len)];
        NSLog(@"%@",result);
        
        //字符串的替换
        str = [str stringByReplacingOccurrencesOfString:@"." withString:@"#"];
        NSLog(@"%@",str);
        
        
        
    }
    return 0;
}

8.NSString的其他用法

//  main.m
//  NSString的其他用法
//
//  Created by Brisinga on 15/11/17.
//  Copyright © 2015年 itcast. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        NSString *str = @" I love u   ";
        NSString *str2 = @"100";
        NSString *str3 = @"50.2";
        //1)获取字符串的每个字符
        for (int i=0; i<str.length; i++) {
            NSLog(@"%c",[str characterAtIndex:i]);
        }
        //2) 字符串和其他数据类型转换
        
        int a = [str2 intValue];
        float b = [str3 floatValue];
        NSLog(@"%.2f",a+b);
        
        //OC的字符串和C的字符串互相转换
           //1) C--->OC
            char *s = "zhangsanfeng";
            NSString *str4 = [NSString stringWithUTF8String:s];
            NSLog(@“%@",str4);
	//1) OC--->C
            str4 = @"hufei";
            const char *s1 = [str4 UTF8String];
            NSLog(@"%s",s1);
        
        //3) NSString去除首尾空格
        NSCharacterSet *set = [NSCharacterSet characterSetWithCharactersInString:@" "];
        str = [str stringByTrimmingCharactersInSet:set];
        NSLog(@"%@",str);
    }
    return 0;
}

二、NSRange的使用


NSRange是Foundation框架中常用的结构体,不是对象!

用来表示一个事物 一个范围,通常是字符串里的字符范围或者数组里的元素范围


NSUInteger location:表示该范围的起始位置

NSUInteger length:表示该范围的长度


1.NSRange的初始化


//
//  main.m
//  NSRange的初始化
//
//  Created by Brisinga on 15/11/17.
//  Copyright © 2015年 itcast. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //第一种方式
        NSRange range;
        range.location = 4;
        range.length = 5;
        
        //第二种方式
        NSRange range2;
        range2 = (NSRange){4,5};
        NSRange range3 = {4,5};
        
        //第三种方式
        NSRange range4 = {.location = 4};
        
        //第四种
        NSRange range5 = NSMakeRange(4, 5);
        //查看结构体变量的值
        NSLog(@"%lu,%lu",range.location,range.length);
        
        //把结构体变量转换称NSString
        NSString *str = NSStringFromRange(range5);
        //输出
        NSLog(@"%@",str);
        NSLog(@"%@",NSStringFromRange(range4));
    }
    return 0;
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:6241次
    • 积分:263
    • 等级:
    • 排名:千里之外
    • 原创:21篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档