您的位置:首页 > 其它

OC_字符串的各种方法与类别

2016-03-04 20:25 190 查看
【字符串】

【注】OC的程序,依托于基础类库Foundation.Foundation框架提供了很多官方类,其中有三个基础的数据结构。

【字符串】【数组】【字典】

知识点

1.NSString

2.NSMutableString

*****************************************************************************

========= 不可变字符串(NSString) =========

1.为什么需要NSString对象

答:在OC中创建字符串时,一般不使用C的方法,

因为C将字符串作为字符数组,所以在操作时会有很多不方便的地方,

在Cocoa中NSString集成的一些方法,可以很方便的操作字符串。

2.OC中定义字符串和C语言定义字符串

OC: NSString *str = @“aaa”;

C: char *c = “aaa”;

char c[20] = “hello”;

3.NSLog如何格式化NSString对象

OC语言:%@

C语言:%s

4.字符串创建

(1)定义字符串常量:

NSString *str = @"My name is xiaoming.";

//@“XXX”表示告诉编译器,创建一个字符串对象,返回值是对象的地址。

//只有官方类有这样的特权。

(2)通过一个字符串创建另一个字符串

NSString * str2 = [[NSString alloc] initWithString:str];

//NSString * str3 = [[NSString alloc] initWithString:@"我是一个字符串咿呀咿呀呦!"];

(3)将C字符串转换为OC字符串

NSString * str3 = [[NSString alloc] initWithUTF8String:"我是C字符串"];

(4)使用格式符创建字符串(拼接字符串)

NSString * str4 = [[NSString alloc] initWithFormat:@"我是万能拼接字符串%d %c %.2f", 1, 'T', 3.14];

[注]每一个init方法,对应一个stringwith的类方法

(5)

NSString *str5 = [NSString stringWithString:str];

(6)

NSString *str6 = [NSString stringWithUTF8String:"qianfeng"];

(7)

NSString *str7 = [NSString stringWithFormat:@"我是万能拼接字符串%d %c %.2f", 1, 'T', 3.14];

5.C语言字符串和NSString的转换

//1.把C字符串转化为OC字符串

str = [NSString stringWithUTF8String:cString];

//2.把OC字符串转化为C字符串

const char *c = [ocString UTF8String];

6.求字符串长度(字符个数)

//汉字的长度也为1

NSUInteger ret = [str length];

7.通过索引获取相应的字符

unichar c = [str characterAtIndex:i];

NSLog(@"%C", c);

//unicode 万国码,用更大的存储空间存储各国字符。

//mac下默认的编码格式称为UTF-8编码格式,是万国码的一个分支,理念是不同的字符,用不同的字节来存储。比如一个汉字占3字节,一个英语字符1字节,但都是一个字符。

8.字符串判断

1)判断两个字符串内容是否相同

//比较两个字符串内容是否相同(区分大小写)

BOOL isEq = [str2 isEqualToString:str3];

BOOL类型:YES是真(1),NO是假(0)

if (isEq == YES)

{

NSLog(@"内容相同");

}

else

{

NSLog(@"内容不相同");

}

2)判断两个字符串是否是同一个对象

if (str2 == str3)

{

NSLog(@"同一个对象");

}

else

{

NSLog(@"不是同一个对象");

}

9.字符串比较

NSComparisonResult result = [str1 compare:str2];

switch (result)

{

case NSOrderedAscending:

NSLog(@"升序");

break;

case NSOrderedSame:

NSLog(@"相同");

break;

case NSOrderedDescending:

NSLog(@"降序");

break;

default:

break;

}

10.转化为基本类型(int,float,bool,double,integer)

(1)int [str1 intValue]

(2)NSInteger [str1 integerValue]

(3)float [str1 floatValue]

(4)bool [str1 boolValue];

(5)double [str1 doubleValue]

(6)long long [str1 longLongValue]

11. 替换字符串

//B字符串替换A字符串(A被B替换)

[str1 stringByReplacingOccurrencesOfString:@“A” withString:@“B”];

12.查找子串的位置和范围

NSRange range = [str rangeOfString:@"粉刷"];

if (range.location == NSNotFound)

{

NSLog(@"没找到!");

}

else

{

NSLog(@"%lu %lu", range.location, range.length);

}

13.子串的提取

(1)从0开始到指定位置 之前

NSString * subStr1 = [str substringToIndex:5];

(2)从指定下标开始截取到最后

NSString * subStr2 = [str substringFromIndex:5];

(3)截取任何一部分

NSRange range = {1,5};

NSString * subStr3 = [str substringWithRange:range];

========= 可变字符串(NSMutableString) =========

NSMutableString 继承自 NSString

1.凡是NSString的方法,NSMutableString都能用

2.凡是传参需要传入NSString * 传入NSMutableString *也行

1.初始化可变字符串(必须初始化)

(1) NSMutableString *string = [[NSMutableString alloc] init];

(2) string = [NSMutableString string];

2.初始化带有字符串的可变字符串

string = [NSMutableString stringWithFormat:];

[NSMutableString stringWithString:];

3.重置字符串内容

[string setString:@"abbbb"];

4.根据指定的位置插入字符串

[string insertString:@“要插入的字符串” atIndex:下标];

5.追加一个部分字符串(在最后追加)

(1)[string appendString:@“要追加的字符串”];

(2)[string appendFormat:@"name=%@",@"xiaoming"];

6.删除字符串一部分

//找要删除的范围

NSRange range = [string rangeOfString:@"22222"];

//删除

[string deleteCharactersInRange:range];

7.修改字符串

[str replaceCharactersInRange:range withString:@"XXXXXXXXXXXXXXX"];

******************************************************************************

【类别/category】

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

<1>.类别的写法:

@interface 类名 (类别名)

定义方法

@end

【注】一旦使用类别给已有的类增补方法,那么这个类的对象就可以使用这个方法

<2>.类别功能:

1. 可以给已有/ 系统原生的类增加方法

2.可以对类的方法进行分类管理,可以将类的实现分散到多个不同文件或多个不同框架中。

<3>使用类别需要注意的问题

1.类别中不能添加成员变量

2.使用类别增加的方法须导入类别头文件

3.父类类别中的方法,子类也可以用

<4>类扩展/匿名类别

当不想对外公开一些类的方法时,我们可以使用类扩展

1.类扩展的基本语法(写在在.m文件中)

@interface Person()//没有名字

- (void)song;

@end

@implementation Person

- (void)song{

}

@end

【注】类扩展中的声明和实现都放在.m文件中

2.类扩展的功能

1.可以实现私有方法

2.方便程序员调用不公开的方法

3.可以声明成员变量
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: