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

原创 2015年11月18日 15:01:13

------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;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

NSRange 和 NSString 详解

一、NSRange 1、NSRange的介绍 NSRange是Foundation框架中比较常用的结构体, 它的定义如下: typedef struct _NSRange { ...
  • u013136306
  • u013136306
  • 2015年11月10日 10:50
  • 2449

objective-c-方法-- (NSRange)rangeOfString:(NSString *)aString;

- (NSRange)rangeOfString:(NSString *)aString; 用法
  • Struggle208
  • Struggle208
  • 2014年11月14日 22:23
  • 1567

NSString (API+常用实例)

//初始化     NSString* str = [NSString stringWithFormat:@"asdfsdfvvvvvvvas"];     NSString* str2 = @...
  • Jason_chen13
  • Jason_chen13
  • 2015年12月07日 17:06
  • 716

获取NSString中所有匹配子字符串的NSRange的array

工作当中,很多的时候需要把一段字符串中某些符合特定条件的字符串做特殊的处理,比如 NSString *string1=@"abcdefabcdefabcdefabcdefbcd"; 我想把其中 所有...
  • iphonecat
  • iphonecat
  • 2016年02月23日 17:15
  • 1853

【黑马程序员】OC-Foundation框架—NSMutableString

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、NSMutableString基本概念 继承自NSString NSMutableSt...
  • u011199045
  • u011199045
  • 2015年11月18日 14:58
  • 186

黑马程序员-------Foundation框架 NSRange

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——- Foundation框架是由许多类、方法、函数、文档按照一定的逻辑组织起来的集合,使编程变的更容易清晰。在Fou...
  • CM187CM
  • CM187CM
  • 2015年10月09日 19:34
  • 189

黑马程序员-OC-Foundation框架基本介绍

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
  • wanglei610723714
  • wanglei610723714
  • 2015年04月01日 17:33
  • 150

传智播客黑马程序员28期JavaEE基础及就业班视频教程

日期 课程(空内容代表放假) 2016/5/23 星期一 开学典礼()     2016/5/24 星期二 HTML实战...
  • qq_38472018
  • qq_38472018
  • 2017年04月29日 11:59
  • 349

NSRange 和 NSString

转载: NSRange 和 NSString NSRange的定义 1 2 3 4 5 typedef struct _NSRange { N...
  • zhuzhihai1988
  • zhuzhihai1988
  • 2012年07月23日 20:23
  • 1420

IOS NSRange用法

摘自:http://hi.baidu.com/ferrari_yang/blog/item/811e92c299396e0a0ef477a7.html NSRange的定义 ...
  • u014468600
  • u014468600
  • 2014年04月12日 12:08
  • 1339
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【黑马程序员】OC-Foundation框架—NSString和NSRange
举报原因:
原因补充:

(最多只允许输入30个字)