你的位置:首页 > 操作系统

[操作系统]OC字符串NSString


==========================

面向对象编程进阶和字符串

==========================

Δ一.类的设计模式—单例

【单例】程序允许过程中,有且仅有一块内存空间存在,这种类的设计模式成为单例

【问】什么时候用到单例

【答】数据共享的时候

 

1.单例的书写格式

以+(加号)开头的方法,可以直接被类调用;-(减号)开头方法 ,是对象方法,用对象来调用;

 

2.认识单例

【见singleDemo】

 

【注】单例方法名字随便起,但是尽量保证见名知意!

 

 

练习1:创建一个单例类single,有一个typeid属性。 创建一个dog类,一个cat类;

要求:dog类中负责修改single类的属性值,cat负责取出typeid值。

【思考】如果不用单例,如何实现?

 

二.get和set方法以及.属性

 

练习2:创建一个cat类,代码实现get和set方法,cat类中有speed 成员变量。

要求:第一种方式用get、set方式

  第二种方式用@property方式

练习3:要求练习1中的题目用@property方式修改

 

====================

字符串

====================

 

一.认识oc中的字符串

oc中以 @“” 包含的内容,是字符串;无论@“”包含了字符串的长度为多少。

【例如】:@“a”,@“123”,@“_%^&*”,

【注】c语言中字符串是用“”,oc中是用@“”

 

NSString

【见strDemo1】

 

//声明了一个类型为NSString 的字符串str

        //NSString 是一个类的类型,用法跟基础类型一样

        //NSString 这个类是苹果公司封装好的一个字符串类

        

        //定义了一个str 这个对象变量,给赋初始值为@"hello world!"

        NSString* str = @"hello world!";

        

        //c字符串

//        char a[64]="hello";

//        a[0],a[1]...

        

//        NSString* str1 = [[NSString alloc]initWithFormat:@"%@",str];

        

//        NSLog(@"%@",str1);

        

        //求字符串长度 --- length

        //oc中 常用int类型,NSUInteger不常用

        NSUInteger length = [str length];

        NSLog(@"%ld",length);

        

        //∆万能拼接字符串

        NSString* Str1 = @"yudejun";

        NSString* Str2 = @"xijinping";

        

        //oc 中 字符串的格式转化符是:%@

        //编译器在碰到格式化转化符的时候,会自动替换成后面参数所对应的变量值

        NSString* Str3 = [NSString stringWithFormat:@"%@ and %@",Str1,Str2];

        NSLog(@"%@",Str3);

        

        //【练习】

        //请拼接2个字符串,第一个字符串内容为@“你好”,第二个字符串为@“中国”;拼接完成之后打印出长度

        NSString* str4 = @"你好";

        NSString* str5 = @"中国";

        NSString* str6 = [NSString stringWithFormat:@"%@%@",str4,str5];

        NSString* str6 = [NSString stringWithFormat:@“%d”,324123];

        NSLog(@"%ld",[str6 length]);

        

        

        //字符串的转化

        NSString* StrInt = @"123456789987654321";

        int a = [StrInt intValue];

        NSLog(@"%d",a);

        

        long long b = [StrInt longLongValue];

        

        //@“0.1234”

        //NSString* StrFloat = @"0.1234";

        float c = [@"0.1234" floatValue];

        

        //练习 : 计算@“1234” @“0.25” @“199” @“0.5” 这四个数的值,并打印出来

        

        

        //字符串分割

        //【注】字符串分割要在字符串有效长度范围内

        NSString* tempStr = @"helloworld";

//        NSString* FStr = [tempStr substringFromIndex:5];

//        NSString* FStr = [tempStr substringToIndex:5];

        

        NSRange range = {2,3};

        NSString* FStr = [tempStr substringWithRange:range];

 

        NSLog(@"%@",FStr);

        

        //字符串的比较

        NSString* tem1 = @"abc";

        NSString* tem2 = @"abc";

        

        //判断tem1 是否等于 tem2

        if ([tem1 isEqualToString:tem2]) {

            NSLog(@"相等");

        }

        else

        {

            NSLog(@"不相等");

        }

        

        NSComparisonResult result = [tem1 compare:tem2];

        if (result == NSOrderedAscending) {

            NSLog(@"tem2 > tem1");

        }

        else if (result == NSOrderedDescending)

        {

            NSLog(@"tem2 < tem1");

            

        }else if (result == NSOrderedSame)

        {

            NSLog(@"tm2 == tem1");

        }

        

        //BOOL 读作布尔类型,只有2种状态,真或者假,可以用1、0也可以用yes 、no

        //字符串前缀和后缀判断

        NSString* string = @"http://www.baidu.com";

        BOOL have = [string hasPrefix:@"http://"];

        if (have == YES) {

            NSLog(@"是http://开头");

        }

        else

        {

            NSLog(@"不是http://开头");

        }

        

        BOOL havejiewei = [string hasSuffix:@"com"];

        if (havejiewei) {

            NSLog(@"是com结尾");

        }

        else

        {

            NSLog(@"不是com结尾");

        }

        

        //转成大写

        NSLog(@"%@",[string uppercaseString]);

        

        //转成小写

        [string lowercaseString];

        

        //所有单词首字母大写

        [string capitalizedString];

        

        //查找字符串中的某个字符串,进行替换,第一个参数是要查找的字符串,第二个字符串为需要替换成的字符串

        string = [string stringByReplacingOccurrencesOfString:@"www" withString:@"googl"];

        NSLog(@"%@",string);

        

        

        NSString* tmp = @"ceshishuju";

        

        //=========================================

        NSMutableString* m_str = [[NSMutableString alloc]initWithString:tmp];

        //字符串的修改

        [m_str setString:@"hello world"];

        

        //字符串的追加

        [m_str appendFormat:@" nihao"];

        

        //字符串的删除

        NSRange rang = {1,2};

        [m_str deleteCharactersInRange:rang];

        

        //字符串的插入

        [m_str insertString:@"xijinping" atIndex:3];

        

        NSLog(@"%@",m_str);

        

        //∆以NSMutable开头的都是可变类型,以NSMutable开头定义的对象都是可以对数据进行修改;

        

//        NSString //不可变字符串

//        NSMutableString//可变字符串

//        NSArray// 不可变数组

//        NSMutableArray//可变数组

        

//        NSDictionary//不可变字典

//        NSMutableDictionary//可变字典

        

        //可变的意思是可以对这个类型定义的变量进行修改或者删除操作