Objective-C第五章Foundation框架的字符串与可变字符串

你好!我是小柒,今天咱们一起学习一下Foundation框架的字符串与可变字符串加油哦!

字符串

本节内容

1、Foundation框架

2、字符串

3、可变字符串

 

回顾:

小柒什么是框架?

答:由许多类、方法、函数组成的一个类库。以便于开发者更方便的开发程序。

小柒什么是Foundation框架?

答:Foundation框架是OC语言的基础类库。此框架中的类都是以“NS”为前缀,便于与其他类区分开。

Foundation常用类的创建

1)、alloc创建

 NSNumber *number1 = [[NSNumber alloc] initWithInt:100];

2)、类方法创建

NSNumber *number2 = [NSNumber numberWithInt:100];

//        类方法的创建对象,方法名以类名为前缀。

//        两种方式的区别主要是内存管理方式不同,后面内存管理时会讲。

从咱们第一天开始讲C和OC都提到了字符串,当然也用到了字符串。

小柒回忆一下C语言的字符串和OC的字符串有哪些区别?

 C语言printf("Hello, World!\n");OC语言NSLog(@"Hello, World!");里面的Hello, World!就是字符串只是C没有@符,但是得加\n,且OC自动换行。

OC的字符串分为NSString不可变和NSMutableString可变两种。

NSString字符串的内容定义以后是不能修改的,是不可变的。

 

不可变字符串NSString

#import <Foundation/Foundation.h>

 int main(int argc, const char * argv[]) {

    @autoreleasepool {

//———————————————————创建字符串————————————————————

//        1.快速创建

        NSString *str1 = @"这是一个字符串";

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

//        2.alloc创建的字符串

//        报黄了,原因是他已经被第一种代替了

        NSString *str2 = [[NSString alloc] initWithString:@"已经被第一种代替了"];

        NSLog(@"str2 = %@",str2);

//        3.创建

        int a = 100;

        NSString *str3 = [[NSString alloc] initWithFormat:@"创建: a = %d",a];

        NSLog(@"str3 = %@",str3);

//        4.类方法创建

        NSString *str4 = [NSString stringWithFormat:@"类方法创建:a = %d",a];

        NSLog(@"str4 = %@",str4);

//——————————————————————字符串比较—————————————————

//        1.比较字符串地址是否相同

        NSString *str5 = [NSString stringWithFormat:@"字符串"];

        NSString *str6 = [NSString stringWithFormat:@"字符串"];

//        判断地址str5 == str6

        if (str5 == str6) {

            NSLog(@"str5 == str6");

        }else{

            NSLog(@"str5 != str6");

        }

//        2.比较内容是否相同

        NSString *str7 = [NSString stringWithFormat:@"字符串"];

        NSString *str8 = [NSString stringWithFormat:@"字符串"];

//        比较内容用isEqualToString

        BOOL isSame = [str7 isEqualToString:str8];

        if (isSame) {

            NSLog(@"字符串内容相同");

        }

//        3.字符串大小比较caseInsensitiveCompare

        NSString *str9 = [NSString stringWithFormat:@"字符串"];

         NSString *str10 = [NSString stringWithFormat:@"1字符串"];

        NSComparisonResult result = [str9 caseInsensitiveCompare:str10];

//            生序:str9str10的比较过程,以str9为基准,str10大于str9就是生序。例如,数字910相比,1091,可以理解为:在9的基础上涨了1,涨了就是生序

        if (result == NSOrderedAscending) {

            NSLog(@"生序:str9 < str10");

//            相同就是一样

        }else if (result == NSOrderedSame) {

            NSLog(@"内容相同");

//            降序:str9str10的比较过程,以str9为基准,str10小于str9就是降序。例如,数字98,以981,可以理解为:在9的基础上减少1,减少就是降序

        } else if (result == NSOrderedDescending){

            NSLog(@"降序:str9 > str10");

        }

//        访问字符串长度

        NSString *str11 = @"ABCD";

       int len = [str11 length];

        NSLog(@"str11 = %@",str11);

        NSLog(@"len = %d",len);

//————————————————————字符串转换———————————————————

//        1.大小写转换

        NSString *str12 = @"hello WORLD";

//        全部大写uppercaseString

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

//        全部小写lowercaseString

        NSLog(@"%@",[str12 lowercaseString]);

//        首字母大写capitalizedString

        NSLog(@"%@",[str12 capitalizedString]);

//        2.转换为基本数据类型

          NSString *str13 = @"10";

//        字符串转换为整型intValue

        int i = [str13 intValue];

        NSLog(@"i = %d",i);

        

        NSString *str14 = @"10.25";

//        字符串转换为单精度浮点floatValue

        float f = [str14 floatValue];

        NSLog(@"f = %.2f",f);

        

        NSString *str15 = @"11.03";

//        字符串转换为双精度浮点doubleValue

        double d = [str15 doubleValue];

        NSLog(@"d = %.2f",d);

        

        NSString *str16 = @"1";

//        字符串转换为BOOL

        BOOL bl = [str16 boolValue];

        if (bl) {

            NSLog(@"正确");

        }else{

            NSLog(@"不正确");

        }

//——————————————————字符串截取—————————————————————

//        1.分割字符串

        NSString *str17 = @"Q,E,W,R";

//        用数组分割字符componentsSeparatedByString

        NSArray *array = [str17 componentsSeparatedByString:@","];

        NSLog(@"str17 = %@",str17);

        NSLog(@"array = %@",array);

//       2.访问指定位置字符

        NSString *str18 = @"wasdijkl";

//       characterAtIndex取字符位置

        char st = [str18 characterAtIndex:1];

        NSLog(@"st = %c",st);

//       3.截取到指定位置

        NSString *str19 = @"abcdefg";

//       截取索引为3前面的字符串

        NSString *str20 = [str19 substringToIndex:3];

        NSLog(@"str19 = %@",str19);

        NSLog(@"str20 = %@",str20);

//        4.从指定位置截取到末尾

        NSString *str21 = @"abcdefg";

//        截取索引为3后面的字符串

        NSString *str22 = [str21 substringFromIndex:3];

        NSLog(@"str22 = %@",str22);

//        5.指定范围截取

        NSString *str23 = @"abcdefg";

//        NSRange结构体里的NSMakeRange(位置,长度);

        NSRange range = NSMakeRange(1, 4);

        NSString *str24 = [str23 substringWithRange:range];

        NSLog(@"str23 = %@",str23);

        NSLog(@"str24 = %@",str24);

        

//——————————————————字符串拼接—————————————————————

        NSString *str25 = @"abc";

        NSString *str26 = @"def";

//        1.stringWithFormat将字符串str25str26拼接到一起

        NSString *str27 = [NSString stringWithFormat:@"%@%@",str25,str26];

        NSLog(@"str27 = %@",str27);

        

//        2.stringByAppendingString将字符串str28str29拼接到一起

        NSString *str28 = @"abc";

        NSString *str29 = @"def";

        NSString *str30 = [str28 stringByAppendingString:str29];

        NSLog(@"str30 = %@",str30);

        

//        3.stringByAppendingFormat追加字符串

        NSString *str31 = @"abc";

        NSString *str32 = @"def";

        NSString *str33 = [str31 stringByAppendingFormat:@"%@",str32];

        NSLog(@"str32 = %@",str33);

        

//————————————————————查找字符串———————————————————

        NSString *email = @"123456@qq.com";

        NSString *str34 = @"@qq.com";

//        在字符串email中查找str34

        NSRange range1 = [email rangeOfString:str34];

//        符合要求

        if (range1.location != NSNotFound) {

            NSLog(@"%@包含%@是一个合格的邮箱",email,str34);

//         符不符合要求

        }else{

            NSLog(@"没有找到邮箱");

        }

        

//————————————————————替换字符串———————————————————

        NSString *email1 = @"123456@qq.com";

        NSString *str35 = [email1 stringByReplacingOccurrencesOfString:@"qq.com" withString:@"136.com"];

        NSLog(@"str35 = %@",str35);

    }

    

    return 0;

}

打印结果:

2016-01-04 14:14:51.928 Task1[4926:130869] str1 = 这是一个字符串

2016-01-04 14:14:51.929 Task1[4926:130869] str2 = 已经被第一种代替了

2016-01-04 14:14:51.929 Task1[4926:130869] str3 = 创建: a = 100

2016-01-04 14:14:51.930 Task1[4926:130869] str4 = 类方法创建:a = 100

2016-01-04 14:14:51.930 Task1[4926:130869] str5 != str6

2016-01-04 14:14:51.930 Task1[4926:130869] 字符串内容相同

2016-01-04 14:14:51.930 Task1[4926:130869] 降序:str9 > str10

2016-01-04 14:14:51.930 Task1[4926:130869] str11 = ABCD

2016-01-04 14:14:51.930 Task1[4926:130869] len = 4

2016-01-04 14:14:51.930 Task1[4926:130869] HELLO WORLD

2016-01-04 14:14:51.930 Task1[4926:130869] hello world

2016-01-04 14:14:51.930 Task1[4926:130869] Hello World

2016-01-04 14:14:51.930 Task1[4926:130869] i = 10

2016-01-04 14:14:51.931 Task1[4926:130869] f = 10.25

2016-01-04 14:14:51.931 Task1[4926:130869] d = 11.03

2016-01-04 14:14:51.931 Task1[4926:130869] 正确

2016-01-04 14:14:51.931 Task1[4926:130869] str17 = Q,E,W,R

2016-01-04 14:14:51.931 Task1[4926:130869] array = (

    Q,

    E,

    W,

    R

)

2016-01-04 14:14:51.931 Task1[4926:130869] st = a

2016-01-04 14:14:51.931 Task1[4926:130869] str19 = abcdefg

2016-01-04 14:14:51.931 Task1[4926:130869] str20 = abc

2016-01-04 14:14:51.932 Task1[4926:130869] str22 = defg

2016-01-04 14:14:51.932 Task1[4926:130869] str23 = abcdefg

2016-01-04 14:14:51.932 Task1[4926:130869] str24 = bcde

2016-01-04 14:14:51.932 Task1[4926:130869] str27 = abcdef

2016-01-04 14:14:51.932 Task1[4926:130869] str30 = abcdef

2016-01-04 14:14:51.932 Task1[4926:130869] str32 = abcdef

2016-01-04 14:14:51.932 Task1[4926:130869] 123456@qq.com包含@qq.com是一个合格的邮箱

2016-01-04 14:14:51.932 Task1[4926:130869] str35 = 123456@136.com

小柒提醒你一定要背下来。

可变字符串 

 NSMutableString是可变字符串,可以修改字符串中的内容.

 @interface NSMutableString : NSString 继承关系

 

可变字符串NSMutableString

#import <Foundation/Foundation.h>

 int main(int argc, const char * argv[]) {

    @autoreleasepool {

//——————————————————插入字符串—————————————————————

        NSMutableString *mutableString = [NSMutableString stringWithString:@"字符串"];

        NSLog(@"mutableString = %@",mutableString);

//        insertString插入字符串

        [mutableString insertString:@"可变" atIndex:0];

        NSLog(@"mutableString = %@",mutableString);

//——————————————————删除字符串—————————————————————

        NSMutableString *mutableString1 = [NSMutableString stringWithString:@"卡特琳娜连招QEWR"];

        NSLog(@"mutableString1 = %@",mutableString1);

//        范围删除deleteCharactersInRange

        NSRange range = NSMakeRange(2, 2);

        [mutableString1 deleteCharactersInRange:range];

        NSLog(@"mutableString1 = %@",mutableString1);

//——————————————————追加字符串—————————————————————

        NSMutableString *mutableString2 = [NSMutableString stringWithString:@"字符串"];

         NSLog(@"mutableString2 = %@",mutableString2);

//        appendString追加字符串

        [mutableString2 appendString:@"追加"];

        NSLog(@"mutableString2 = %@",mutableString2);

    }

    return 0;

}

打印结果:

2016-01-04 14:49:02.882 Task[5372:146126] mutableString = 字符串

2016-01-04 14:49:02.883 Task[5372:146126] mutableString = 可变字符串

2016-01-04 14:49:02.883 Task[5372:146126] mutableString1 = 卡特琳娜连招QEWR

2016-01-04 14:49:02.883 Task[5372:146126] mutableString1 = 卡特连招QEWR

2016-01-04 14:49:02.884 Task[5372:146126] mutableString2 = 字符串

2016-01-04 14:49:02.884 Task[5372:146126] mutableString2 = 字符串追加

小柒美好的时光总是短暂的,今天的字符串就学完了,记得预习数组和可变数组,加油哦!

posted on 2015-12-31 14:17  xxQMYxx  阅读(117)  评论(0编辑  收藏  举报

导航