黑马程序员——OC常用类NSString/NSMutableString《Foundation框架中类》

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

NSString/NSMutableString:OC字符串处理核心类

        NSString/NSMutableString是Foundation框架中的类,是Objective-C
字符串处理的核心类。这两个类最大的区别:NSString
创建赋值以后,该类字符串除了重新被赋值,其的内容与长度不能动态的更改。NSMutableString
创建赋值以后可以动态更改其内容与长度。其中,NSMutableString类继承了NSString类(在NSString的头文件(NSString.h文件)中可以看到:@interface NSMutableString
: NSString这句代码)。所以NSMutableString类可以使用NSString中的所有方法。

实例代码:

NSString *str1 [email protected]"the first way to create string";//创建NSString字符串
NSMutableString *mstr = [[NSMutableString alloc]initWithString:@"The first way to create "];//创建NSMutableString字符串
<span style="font-size:18px;color:#ff6666;">//将str1字符串的首字母大写,重新赋值给str1(不能在原str上直接修改)</span>
str1 =[str1 capitalizedString];//重新赋值可以改变NSString的内容,不赋值不可改变其内容与长度
[mstr appendString:@"mutablestring"];<span style="font-size:18px;color:#ff6666;">//在原mstr后面追加内容,改变了mstr的内容与长度</span>

1.NSString创建

创建方式:

<span style="font-size:18px;color:#ff6666;background-color: rgb(255, 255, 255);">一、直接赋值</span>
NSString *str1 [email protected]"the first way to create string";
<span style="font-size:18px;color:#ff6666;">二、常用的对象创建方法</span>
NSString *str2 = [[NSString alloc]initWithString:@"The second way to create string"];
<span style="font-size:18px;color:#ff6666;">三、拼接法创建</span>
NSString *str3 = [[NSString alloc]initWithFormat:@"第%d种创建方式:%d年%d月%d日",3,2015,4,11];
<span style="font-size:18px;color:#ff6666;">四、将C语言字符串转换为OC字符的创建方式</span>
NSString *str4 = [[NSString alloc]initWithUTF8String:"这是const char *(C语言字符串)转换为NSString的方式创建字符串"];
<span style="font-size:18px;color:#ff6666;">五、读取本地文件的创建方式,读取/Users/Mac/Desktop/IOS_study路径下的a.txt文件内容,采用UTF8编码</span>
NSString *str5 = [[NSString alloc]initWithContentsOfFile:@"/Users/Mac/Desktop/IOS_study/a.txt" encoding:NSUTF8StringEncoding error:nil];
<span style="font-size:18px;color:#ff6666;">六、读取资源的创建方式</span><span style="color: rgb(255, 102, 102); font-size: 18px; font-family: Arial, Helvetica, sans-serif;">,读取/Users/Mac/Desktop/IOS_study路径下的b.txt文件内容,采用UTF8编码</span><span style="font-size:18px;color:#ff6666;">
</span>NSURL *url = [[NSURL alloc]initWithString:@"file:///Users/Mac/Desktop/IOS_study/b.txt"];
NSString *str6 = [[NSString alloc]initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];

实例示范:

//  Created by Mac on 15/4/11.
//  Copyright (c) 2015年 Hua_san. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //一、直接赋值
        NSString *str1 [email protected]"the first way to create string";
        //二、常用的对象创建方法
        NSString *str2 = [[NSString alloc]initWithString:@"The second way to create string"];
        //三、拼接法创建
        NSString *str3 = [[NSString alloc]initWithFormat:@"第%d种创建方式:%d年%d月%d日",3,2015,4,11];
        //四、将C语言字符串转换为OC字符的创建方式
        NSString *str4 = [[NSString alloc]initWithUTF8String:"这是const char *(C语言字符串)转换为NSString的方式创建字符串"];
        //五、读取本地文件的创建方式,读取/Users/Mac/Desktop/IOS_study路径下的a.txt文件内容,采用UTF8编码
        NSString *str5 = [[NSString alloc]initWithContentsOfFile:@"/Users/Mac/Desktop/IOS_study/a.txt" encoding:NSUTF8StringEncoding error:nil];
        //路径/Users/Mac/Desktop/IOS_study下的a.txt内容为: 这是第5种创建方式,通过读取文件创建NSString

        //六、读取资源的创建方式
        /**
         1.URL:资源路径
         2.表示方法:协议头://+路径
         3.常见协议头:file(获取本地资源),ftp(获取ftp服务器上的资源),http(获取http服务器上的资源)
         4.获取百度图片:http://image.baidu.com..../xxx.png
         5.本示例采用UTF8编码,读取本地文件.URL资源路径采用方法2拼接得到:file:///Users/Mac/Desktop/IOS_study/b.txt
         6.路径/Users/Mac/Desktop/IOS_study下b.txt存的内容:这是第六种创建方式,通过URL资源读取本地文件,协议头为:file://
         */
        NSURL *url = [[NSURL alloc]initWithString:@"file:///Users/Mac/Desktop/IOS_study/b.txt"];
        NSString *str6 = [[NSString alloc]initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];

        NSLog(@"%@",str1);
        NSLog(@"%@",str2);
        NSLog(@"%@",str3);
        NSLog(@"%@",str4);
        NSLog(@"%@",str5);
        NSLog(@"%@",str6);
    }
    return 0;
}

输出结果:

2015-04-11 18:53:17.239 02-NSString类[1360:64404] the first way to create string
2015-04-11 18:53:17.240 02-NSString类[1360:64404] The second way to create string
2015-04-11 18:53:17.241 02-NSString类[1360:64404] 第3种创建方式:2015年4月11日
2015-04-11 18:53:17.241 02-NSString类[1360:64404] 这是const char *(C语言字符串)转换为NSString的方式创建字符串
2015-04-11 18:53:17.241 02-NSString类[1360:64404] 这是第5种创建方式,通过读取文件创建NSString
2015-04-11 18:53:17.241 02-NSString类[1360:64404] 这是第六种创建方式,通过URL资源读取本地文件,协议头为:file://

2.NSString截取

实例示范:

//  Created by Mac on 15/4/11.
//  Copyright (c) 2015年 Hua_san. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSString *str1 [email protected]"the first way to create string";
        <span style="font-size:18px;color:#ff6666;">//获取字符串的长度</span>
        NSInteger lenth = [str1 length];
        <span style="font-size:18px;color:#ff6666;">//根据索引值,获取字符</span>
        unichar ch = [str1 characterAtIndex:2];//索引值从0开始计算
        <span style="font-size:18px;color:#ff6666;">//截取字符串尾部</span>
        NSString *end = [str1 substringFromIndex:17];//索引值从0开始计算
        <span style="font-size:18px;color:#ff6666;">//截取首部</span>
        NSString *first = [str1 substringToIndex:3];
       <span style="font-size:18px;"> <span style="color:#ff6666;">//获取字符串“to”在str1字符串中的范围</span></span>
        NSRange range = [str1 rangeOfString:@"to"];
        <span style="font-size:18px;color:#ff6666;">//按range的范围,从str1中截取字符串</span>
        NSString *to_str = [str1 substringWithRange:range];
        NSLog(@"%@",str1);
        NSLog(@"字符串%@的长度为:%ld",str1,lenth);
        NSLog(@"第3个字符为:%c",ch);
        NSLog(@"从字符串%@的第18个字符开始,截取其尾部得:%@",str1,end);
        NSLog(@"对字符串%@,截取前3个字符得:%@",str1,first);
        NSLog(@"\"to\"字符串在%@中的初始位置:%ld,占用长度为:%ld",str1,range.location,range.length);
        NSLog(@"对字符串%@,截取范围(初始位置:%ld,长度:%ld)得到字符串:%@",str1,range.location,range.length,to_str);
   }
    return 0;
}

输出结果:

2015-04-11 19:31:20.065 02-NSString类[1641:77263] the first way to create string
2015-04-11 19:31:20.066 02-NSString类[1641:77263] 字符串the first way to create string的长度为:30
2015-04-11 19:31:20.066 02-NSString类[1641:77263] 第3个字符为:e
2015-04-11 19:31:20.067 02-NSString类[1641:77263] 从字符串the first way to create string的第18个字符开始,截取其尾部得:create string
2015-04-11 19:31:20.067 02-NSString类[1641:77263] 对字符串the first way to create string,截取前3个字符得:the
2015-04-11 19:31:20.067 02-NSString类[1641:77263] "to"字符串在the first way to create string中的初始位置:14,占用长度为:2
2015-04-11 19:31:20.067 02-NSString类[1641:77263] 对字符串the first way to create string,截取范围(初始位置:14,长度:2)得到字符串:to

3.NSString判断比较

实例示范:

<span style="font-size:12px;">//  Created by Mac on 15/4/11.
//  Copyright (c) 2015年 Hua_san. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSString *str = @"the first way to create string";
        NSString *str1 = @"the";
    </span><span style="font-size:18px;color:#ff6666;">/*1.判断字符串str是否为空</span><span style="font-size:12px;">
        str==nil
        str.length ==0
     */
    </span><span style="font-size:18px;color:#ff6666;">//2.判断字符串str是否以str1开头</span><span style="font-size:12px;">
        BOOL preFix = [str hasPrefix:str1];
    </span><span style="font-size:18px;color:#ff6666;">//3.判断字符串str是否以str1结尾</span><span style="font-size:12px;">
        BOOL sufFix = [str hasSuffix:str1];
    </span><span style="font-size:18px;color:#ff6666;">//4.判断两个字符串是否相等</span><span style="font-size:12px;">
        BOOL isEqual = [str isEqualToString:str1];

        NSLog(@"\npreFix:%d\nsufFix:%d\nisEqual:%d",preFix,sufFix,isEqual);

   }
    return 0;
}</span>

输出结果:

<span style="font-size:12px;">2015-04-11 22:03:00.326 02-NSString类[2069:115725]
preFix:1
sufFix:0
isEqual:0</span>

4.NSString写入文件

实例示范:

<span style="font-size:12px;">//  Created by Mac on 15/4/11.
//  Copyright (c) 2015年 Hua_san. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSString *str = @"The first way to create string";
        NSString *str1 = @"\n这是拼接上去的字符串";
        </span><span style="font-size:18px;color:#ff6666;">//将str字符串写入本地文件中。</span><span style="font-size:12px;">
        BOOL isWiter = [str writeToFile:@"/Users/Mac/Desktop/IOS_study/c.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
        if(isWiter)
            NSLog(@"第一次写入文件成功!");
        else
            NSLog(@"第一次写入文件失败");
        //此处操作文件路径为/Users/Mac/Desktop/IOS_study/c.txt,若文件不存在,则重新创建,若存在直接写人,写入文件将先清空文件中的内容。<span style="color:#ff6666;">atomically:yes是相当打开原子操作</span>(若写入中断,则全部不写入文件)。编码方式:使用UTF-8进行编码。

        </span><span style="font-size:18px;color:#ff6666;">//读取文件</span><span style="font-size:12px;">
        NSString *readString = [[NSString alloc]initWithContentsOfFile:@"/Users/Mac/Desktop/IOS_study/c.txt" encoding:NSUTF8StringEncoding error:nil];
        </span><span style="font-size:18px;color:#ff6666;">//将str1拼接在readString(读出来的字符串)的末尾</span><span style="font-size:12px;">
        str1 = [readString stringByAppendingString:str1];
        </span><span style="font-size:18px;color:#ff6666;">//写入文件</span><span style="font-size:12px;">
        isWiter = [str1 writeToFile:@"/Users/Mac/Desktop/IOS_study/c.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
        if(isWiter)
            NSLog(@"第二次写入文件成功!");
        else
            NSLog(@"第二次写入文件失败");

   }
    return 0;
}</span>

输出结果:

<span style="font-size:12px;">2015-04-11 22:42:57.792 02-NSString类[2341:128870] 第一次写入文件成功!
2015-04-11 22:42:57.794 02-NSString类[2341:128870] 第二次写入文件成功!</span>

本地文件c.txt (刚刚写入的文件)内容如下:

The first way to create string

这是拼接上去的字符串

5.NSMutableString可变字符串的常用操作

实例示范:

<span style="font-size:12px;">//  Created by Mac on 15/4/11.
//  Copyright (c) 2015年 Hua_san. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
       </span><span style="font-size:18px;"> <span style="color:#ff6666;">//创建可变字符串</span></span><span style="font-size:12px;">
        NSMutableString *str=[[NSMutableString alloc]initWithString:@"My name is Object-C"];
        NSLog(@"新创建的字符串str:%@",str);
        </span><span style="font-size:18px;color:#ff6666;">//在其末尾增加字符串,其长度改变,其内容也改变</span><span style="font-size:12px;">
        [str appendString:@" JAVA C++"];
        NSLog(@"增加内容后的字符串str:%@",str);
        </span><span style="font-size:18px;color:#ff6666;">//查找Object-C的在str字符串中的范围</span><span style="font-size:12px;">
        NSRange range =[str rangeOfString:@"Object-C"];
        </span><span style="font-size:18px;color:#ff6666;">//删除Object-C</span><span style="font-size:12px;">
        [str deleteCharactersInRange:range];
        NSLog(@"删除Object-C后的字符串str:%@",str);

   }
    return 0;
}</span>

输出结果:

<span style="font-size:12px;">2015-04-11 23:03:56.679 02-NSString类[2490:136327] 新创建的字符串str:My name is Object-C
2015-04-11 23:03:56.680 02-NSString类[2490:136327] 增加内容后的字符串str:My name is Object-C JAVA C++
2015-04-11 23:03:56.680 02-NSString类[2490:136327] 删除Object-C后的字符串str:My name is  JAVA C++</span>
时间: 2024-12-16 17:12:26

黑马程序员——OC常用类NSString/NSMutableString《Foundation框架中类》的相关文章

黑马程序员-OC的类的构造方法

构造方法:用来初始化对象的:首先分解一下创建对象的过程: Person *p = [Person new]; // new方法是alloc 和 init 这两个方法的组合: 完整的创建可用对象的过程: 1:分配存储空间:  就是调用的  +alloc 方法,这个方法是类方法,返回的是一个分配好存储空间的 对象: 2:初始化:-init 方法,对象方法,由alloc方法返回的对象调用init对对象进行初始化: 所以创建一个对象的规范和常用的方式:  Person *p = [[Person all

黑马程序员——OC语言基本语法知识foundation

1.结构体:NSRange .NSPoint(CGPoint). NSSize(CGSize). NSRect(CGRect) NSRange :表示范围,有两个成员变量:location ,length 例如:@“I love you”求出love的范围 int main() { NSRange r1= NsMakeRange{2,4}; return 0; } 例如:查找出某个字符串在str中的范围 NSString *str = @"I love you"; NSRanger r

黑马程序员--oc基础第九篇(Foundation框架上)

九 . oc基础(Foundation框架上) 1.四中结构体类型:NSRange,NSPoint,NSSize,NSRect 1>NSRange:是一个以为的结构由成员location和成员length共同组成. *NSRange的创建方式:NSRange range=NSMakeRange(2.4),代表范围是从2开始一直到5,location为2,length为4 *NSString *[email protected]“I love you”:NSRange range=[str ran

黑马程序员-OC学习笔记之NSString与NSMutableString

---------------------- IOS开发.Android培训.期待与您交流! ---------------------- 一.NSString与NSMutableString 相信大家对NSString类都不陌生,它是OC中提供的字符串类,它的对象中的字符串都是不可变的,而它的子类NSMutableString类的对象中的字符串就是可变的.什么是可变与不可变呢?二者的区别就是在已经创建的一个字符串对象中,在程序中能不能更改字符串,比如拼接新的字符串,可变的可以在原字符串中更改,

黑马程序员-OC特有语法:分类category,给NSString增加方法计算字符串中数字的个数

1:分类的使用场景:想对一个类,扩充一些功能,而又不改变原来类的模型,也不用继承,这时OC中的特有语法:分类可以做到: 当然分类也是一个类,也需要声明和实现,声明在.h文件中,实现在.m文件中,格式如下 // 声明 @interface  类名  (分类名称) @end // 实现 @implementation 类名 (分类名称) @end 2:分类的好处,当一个类比较庞大时,不同的部分可以放到不同的分类中,也方便团队中类的开发: 3:分类使用注意: a:分类不能增加成员变量,只能对原类增加方

黑马程序员——oc语言学习心得—— 属性声明和赋值

黑马程序员——oc语言学习心得—— 属性声明和赋值 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1,在oc中所有类继承与终极父类Object2,声明字符变量采用N是string  *_xxx 实例变量一般以下划线开头3,在oc中方法以+ -号区分 -号开头是实例方法或对象方法  +号开头是类方法  前置用对象调用 后者用类名调用4,在xcode4以后声明@property 不用在写@snysize  自动生成get.set方法5,属性

黑马程序员-OC学习笔记之Foundation框架NSNumber、NSValue和NSDate

---------------------- IOS开发.Android培训.期待与您交流! ---------------------- 一.NSNumber 前几篇笔记中,小桥复习了Foundatio框架中的几个类,这三个是OC学习的尾声了. 小桥已经复习过OC数组类NSArray,也说过它只能存放OC的对象,对于基本的数据类型确无能为力,但是实际编程中经常要把基本的数据如int.float,结构体存放的OC数组中,怎么办?这里的NSNumber就有用了,它能够把基本数据类型包装成OC对象.

黑马程序员——OC学习笔记—— Copy

黑马程序员——OC学习笔记—— Copy ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- copy 即对象拷贝 要使用对象数据而不希望修改对象时,可以使用copy copy叫做浅拷贝  mutablecopy深拷贝 copy需要遵守NSCopying协议,实现CopywithZone方法 MutableCopy也一样要遵守相应协议 注意: OC中copy复制的对象都是不可变的  mutablecopy复制的是可变副本 浅拷贝:只拷贝地址,不

黑马程序员-OC学习笔记之Foundatio框架集合类

---------------------- IOS开发.Android培训.期待与您交流! ---------------------- 一.OC数组 OC数组是一个类,它也分不可变数组NSArray和可变数组NSMutableArray. 1?不可变数组的创建 // 创建一个不可变数组,元素为一个OC字符串对象 @"小桥" NSArray *array1 = [NSArray arrayWithObject:@"小桥"]; // 创建一个不可变数组,元素为多个O