OC语言笔记(二):OC字符串操作

来源:互联网 发布:聊聊语音聊天网mac 编辑:程序博客网 时间:2024/06/06 20:13

OC字符串

一、NSString 不可变字符串(内容)

   1OC的字符串常量

  打印字符串,C使用%sOC使用%@,%@是一个很强大的打印符,只要是对象,就能用%@来打印

    @"我是人";//这就是一个字符串常量

    NSLog(@"%@",@"pp");

     

    2OC字符串变量(对象)

  OC的字符串是一个对象

    NSString *str = @"我是好人";

    //@"我是好人",字符串常量

    //str 字符串对象的指针,str指向了@"我是好人"这个字符串常量

    NSLog(@"%@",str);

    

    3、实例化OC字符串对象

    3.1 alloc方法

     3.1.1 用另一个OC字符串来初始化新的OC字符串

    NSString *strAllocWithStr = [[NSStringalloc] initWithString:str];//一个字符串对象

    //方法名是initWithString,参数是一个NSString字符串对象

    

      3.1.2 用一个C字符串来初始化新的OC字符串

    NSString *strAllocWithChar = [[NSStringalloc] initWithCString:"我也是好人" encoding:NSUTF8StringEncoding];

    //方法名是initWithCString:encoding:,第一个参数是一个C的字符串,第二个参数是编码

    

      3.1.3 用格式化的方式来初始化新的OC字符串

    NSString *strAllocWithFormat = [[NSStringalloc] initWithFormat:@"%d%@",11,str];

    NSLog(@"%@,%@,%@",strAllocWithStr,strAllocWithChar,strAllocWithFormat);

    

      练习

    NSString *newStr = [[NSStringalloc] initWithString:@"哈哈"];

    NSString *newStr1 = [[NSStringalloc] initWithCString:"嘻嘻"encoding:NSUTF8StringEncoding];

    NSString *newStr2 = [[NSStringalloc] initWithFormat:@"%@%@",newStr,newStr1];

    NSLog(@"%@",newStr2);

    

     3.2用类方法来初始化OC字符串

     3.2.1 用一个OC字符串来初始化新的OC字符串

    NSString *strWithString = [NSStringstringWithString:str];


      3.2.2 用一个C字符串来初始化新的OC字符串

    NSString *strWithCString = [NSStringstringWithCString:"我也是好人" encoding:NSUTF8StringEncoding];


      3.2.3 用格式化方法来初始化新的OC字符串

    NSString *strWithFormat = [NSStringstringWithFormat:@"%d%@",11,str];

    NSLog(@"%@,%@,%@",strWithString,strWithCString,strWithFormat);

     练习:

    //有两个数字:1112,请用alloc init方法把他们拼成一个OC字符串,再用类方法,把他们拼成一个OC字符串

    NSString *numAllocStr = [[NSStringalloc] initWithFormat:@"%d%d",11,12];

    NSString *numStr = [NSStringstringWithFormat:@"%d%d",11,12];

    NSLog(@"%@,%@",numAllocStr,numStr);

    //用你喜欢的format方法,把@”pp“ @”“ @”好人拼成一个@”pp是好人

    NSString *strAllocStr =[[NSStringalloc]initWithFormat:@"%@%@%@",@"pp",@"",@"好人"];

    NSString *str11=[NSStringstringWithFormat:@"%@,%@,%@",@"pp",@"",@"好人"];

    

    4、字符串的拼接

    4.1 在一个字符串的后面拼上新的字符串

    //我准备在str后面拼上@“才怪

    NSString *str1 = [strstringByAppendingString:@"才怪"];//拼完了之后,会生成一个新的NSString,因此需要有一个NSString的对象来接受这个方法的返回值

    NSLog(@"str is %@",str);

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

    //使用stringByAppendingString可以在一个NSString字符串的后面拼上一个新的字符串,生成一个新的字符串


     4.2随便拼

    NSString *str3 = [NSStringstringWithFormat:@"%@%@%@%d",@"123",str,@"才怪",99];

    NSLog(@"%@",str);

    NSLog(@"%@",str3);

    //请在@“后面拼上@”饿了,使用两种办法

    NSLog(@"%@",[@""stringByAppendingString:@"饿了"]);

    NSLog(@"%@",[NSStringstringWithFormat:@"%@%@",@"",@"饿了"]);

    //使用随便拼,format的方法,还有一个功能,就是把int这些基本类型转成字符串

    //请把@“123”@“567”@“pp”,拼成@“pp567123”,用两种办法

    NSString *newstr = [@"123"stringByAppendingString:@"567"];

    NSString *newstr2 = [newstr stringByAppendingString:@"pp"];

    NSLog(@"%@",newstr2);

    NSString *newstr1 = [NSStringstringWithFormat:@"%d%d%@",123,567,@"pp"];

    NSLog(@"%@",newstr1);

    

    5、计算字符串的长度

    int length = [str length];

    //length方法用来返回一个字符串的长度,这是一个-方法,要用一个字符串对象来调用

    NSLog(@"%d",length);

    //请计算@"123456789"的长度

    int numLength = [@"123456789"length];

    NSLog(@"%d",numLength);

    

    6、判断两个字符串是否完全相同

    NSString *equlStr1 = @"i love u";

    NSString *equlStr2 = @"i love u";

    

    BOOL result = [equlStr1 isEqualToString:equlStr2];

    NSLog(@"%d",result);

    //isEqualToString判断两个字符串是否相等,是一个-方法,用一个字符串调用,参数是另一个字符串,结果是这两个字符串是否相等

    

    if([equlStr1 isEqualToString:equlStr2])

    {//

        //dosomething

    }

    else

    {//

        //dosomething

    }

    

    //请判断,@“午饭@“牛饭是否相等

    

    7、比较两个字符串的大小

    //@“pp”,@"qq"

    int answer = [@"qq"compare:@"qq"];

    NSLog(@"%d",answer);

    

    //请比较@“我是人@“我是pp”谁大

    int answer1 = [@"我是人"compare:@"我是pp"];

    NSLog(@"%d",answer1);

    

    8、不区分大小写的比较

    //比较@“Abc”@“abc”的大小,如果不区分大小写

    int answer2 = [@"Abc"compare:@"abc"options:NSCaseInsensitiveSearch];//这个比较方法是一个-方法,用一个字符串对象调用,第一个参数是要比较的另一个字符串对象,第二个参数是一个约束条件,这里是不区分大小写

    NSLog(@"%d",answer2);

    

    9、变大变小

    NSString *beginStr = @"abc";

    //NSString *beginStr = [NSString stringWithString:@"abc"];这么写和上面的结果是一样的

    

    9.1 把这个字符串变成大写

    NSString *upStr = [beginStr uppercaseString];

    NSLog(@"%@,%@",beginStr,upStr);

    

    9.2 把大写字符串变成小写

    NSString *lowStr = [upStr lowercaseString];

    NSLog(@"%@,%@,%@",beginStr,upStr,lowStr);

    

     9.3 大写首字母

    NSString *capStr = [lowStr capitalizedString];

    NSLog(@"%@,%@,%@,%@",beginStr,upStr,lowStr,capStr);


   10、在一个字符串中,查找另一个字符串

    NSString *originalStr = @"我们都是好人";

    NSString *searchStr = @"";

    

    NSRange range = [originalStr rangeOfString:searchStr];//结构体不要加*

    //方法名是rangeOfString,参数是想被查的字符串,这个方法是减方法,要用一个字符串对象调用(原始大字符串)

    NSLog(@"好的位置是%d,好的长度是%d",range.location,range.length);

    

    if(range.location !=NSNotFound)

    {

        NSLog(@"找到了");

    }

    else

    {

        NSLog(@"啥也没有");

    }

    

    //请在@"ios1435class都是好家伙"中查找@"pp",判断是否能找到,如果找到了:打印@"nice",如果没找到,继续在@"ios1435class都是好家伙"中查找@"class",如果找到了,打印这个classlocation和长度,如果没找到打印:@"nice"

    NSString *bigStr =@"ios1435class都是好家伙";

    NSString *smallStr = @"pp";

    NSString *smallStr1 = @"class";

    if([bigStr rangeOfString:smallStr].location !=NSNotFound)

    {

        NSLog(@"nice");

    }

    else

    {

        if([bigStr rangeOfString:smallStr1].location != NSNotFound)

        {

            NSLog(@"%d,%d",[bigStrrangeOfString:smallStr1].location,[bigStrrangeOfString:smallStr1].length);

        }

        else

        {

            NSLog(@"nice");

        }

    }

    

    11、对字符串进行切割

    NSString *tempStr =@"abcdefghijklmnopqrstuvwxyz";

    11.1 从头切,切到哪儿你定,定的这一位不切

    NSString *frontStr = [tempStr substringToIndex:4];

    NSLog(@"%@",frontStr);

    11.2 从哪切你定,切到尾,定的这位也要切

    NSString *middleStr = [tempStr substringFromIndex:25];

    NSLog(@"%@",middleStr);

    11.3 告诉我从哪儿切,切多少

    NSRange tempRange = NSMakeRange(25, 1);//手动制作NSRange结构体

    NSString *rangeStr = [tempStr substringWithRange:tempRange];

    NSLog(@"%@",rangeStr);

    

    练习:

请把@“今天天气不错,是风和日丽的,我们下午没有课,是心情也不错,切一下,

    第一步,切出心情也不错

    第二步,切出今天

    第三步,切出我们下午没有课

    

    12、判断一个字符串的头和尾

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

    

    12.1判断他有没有http的头

    BOOL isHasHttpHead = [urlStr hasPrefix:@"http"];//urlStr中查找是否有http这个开头

    if(isHasHttpHead)

    {

        //dosomething

    }

    else

    {

        //dosomething

    }

    

    12.2判断他有没有com的尾

    BOOL isHasComTail = [urlStr hasSuffix:@"com"];

    if(isHasComTail)

    {

        //dosomething

    }

    else

    {

        //dosomething

    }

    

    练习:

  请判断下面这个字符串是不是手机号,(第一位是不是1  4008517517

      请判断,下面这个是不是个邮箱地址(最后是不是.com||.net   pp@qq.cn

    BOOL isMobilePhone = [@"4008517517"hasPrefix:@"1"];

    if(isMobilePhone){

        NSLog(@"是手机");

    }

    else

    {

        NSLog(@"不是手机");

    }

    

    BOOL isEmail = [@"pp@qq.cn"hasSuffix:@".com"];

    BOOL isEmailToo = [@"pp@qq.cn"hasSuffix:@".net"];

    if(isEmail || isEmailToo)

    {

        NSLog(@"是邮箱");

    }

    else

    {

        NSLog(@"不是邮箱");

    }

    

二、NSMutableString可变字符串(内容)

    注意:NSMutableString的爸爸就是NSString,所以上面的方法,下面都可以用

   1、实例化并初始化

    NSMutableString *muStr = [[NSMutableStringalloc] initWithCapacity:0];//设置可变字符串的空间,不管这里设置为多少,未来用到的时候不够用,会自动申请更多的空间

    

    NSMutableString *muStrClass = [NSMutableStringstringWithCapacity:0];

    //永远也不要用可变的对象去直接指一个内容,而是往里装

    NSLog(@"啥也没有的时候%@",muStr);

    2、增

    [muStr appendString:@"pp"];//想可变字符串增加一个字符串

    NSLog(@"%@",muStr);

    

    [muStr appendFormat:@"%d",23];

    NSLog(@"%@",muStr);

    //上面两个方法是在后面增

    

    //加塞的方法

    [muStr insertString:@"&"atIndex:1];

    NSLog(@"%@",muStr);

    

    //变成P&PPP23

    [muStr insertString:@"pp"atIndex:3];

    NSLog(@"%@",muStr);

    

    //变成p&ppp23的说

    [muStr appendString:@"的说"];

    NSLog(@"%@",muStr);

    

    3、改,把第一个参数这个区域的字符串改成第二个参数的字符串

    //改成p@qqp23的说

    [muStr replaceCharactersInRange:NSMakeRange(1,3) withString:@"@qq"];

    NSLog(@"%@",muStr);

    

    //改成pm23的说

    [muStr replaceCharactersInRange:NSMakeRange(1,4) withString:@"m"];

    NSLog(@"%@",muStr);

    

    //改成pm2.5的说

    [muStr replaceCharactersInRange:NSMakeRange(3,1) withString:@".5"];

    NSLog(@"%@",muStr);

    

    //另一种改法,简单!!!!禁用!!!!

    //改成我们少制造点pm2.5

    [muStr setString:@"我们少制造点pm2.5"];

    NSLog(@"%@",muStr);

    

    4、删

    //删成我们少2

    [muStr deleteCharactersInRange:NSMakeRange(3,5)];

    NSLog(@"%@",muStr);

    

    [muStr deleteCharactersInRange:NSMakeRange(4,2)];

    NSLog(@"%@",muStr);

    

    //1、请做一个可变字符串

    //2、增加为我是人

    //3、增加为我是人民币

    //4、增加为我是一元人民币

    //5、修改为我是大好人

    //6、修改为我是大大的好人

    //7、删除成我好

    

    NSMutableString *lastStr = [NSMutableStringstringWithCapacity:0];

    [lastStr appendString:@"我是人"];

    [lastStr appendString:@"民币"];

    [lastStr insertString:@"一元"atIndex:2];

    [lastStr replaceCharactersInRange:NSMakeRange(2,5) withString:@"大好人"];

    [lastStr replaceCharactersInRange:NSMakeRange(2,1) withString:@"大大的"];

    [lastStr deleteCharactersInRange:NSMakeRange(1,4)];

    [lastStr deleteCharactersInRange:NSMakeRange(2,1)];

    NSLog(@"%@",lastStr);

    

    //请把下面字符串里面的国军日本中南海变成XXXX

    //今天是国庆节,我们观看了中国军队的大阅兵,管理台上有日本来的客人,这些日本人最后被带进了中南海。

    NSMutableString *japanStr = [NSMutableStringstringWithCapacity:0];

    [japanStrappendString:@"今天是国庆节,我们观看了中国军队的大阅兵,管理台上有日本来的客人,这些日本人最后被带进了中南海"];

    

    while ([japanStr rangeOfString:@"国军"].location !=NSNotFound) {

        [japanStr replaceCharactersInRange:[japanStrrangeOfString:@"国军"]withString:@"XXXX"];

    }

    while ([japanStr rangeOfString:@"日本"].location !=NSNotFound) {

        [japanStr replaceCharactersInRange:[japanStrrangeOfString:@"日本"]withString:@"XXXX"];

    }

    while ([japanStr rangeOfString:@"中南海"].location !=NSNotFound) {

        [japanStr replaceCharactersInRange:[japanStrrangeOfString:@"中南海"]withString:@"XXXX"];

    }

    NSLog(@"%@",japanStr);




作业:

1、使用alloc和类方法分别创建2个NSString


2、创建一个内容为“我们爱”的NSString字符串,然后使用format方法向这个字符串拼接“学习”,然后使用stringByAppendingString的方法向这个字符串拼接“ios”


3、计算“123456789”这个字符串的长度


4、判断“今天下雨了”和“今天下 雨了”这两个字符串是否相等,再判断“abc”和“Abc”是否相等


5、比较“abcd”与“Abcd”谁大谁小,再不区分大小比较这两个字符串谁大谁小


6、把“hello”通过大小写转为“HELLO”,再通过大小写转为“hello”,最后使用首字母大写转为“Hello”


7、在“少壮不努力,老大徒伤悲”中查找是否有“老大”这个字符串,如果有打印“老大”在这个字符串的位置和长度


8、规则:如果有http://的开头,同时还有.com的结尾,则这个字符串是一个网页地址

判断

www.baidu.com

http://www.baidu.com

http://www.yahoo.cn

是不是一个网址,是的话打印成功,不是的话打印失败


9、把<SSF123N DSAFAS8 123109 SADFD ADF090 ADFDN3>中的字母提取出来,也就是去掉空格和“<”、“   ”、“>”这三个符号

SSF123NDSAFAS8


10、创建一个可变字符串,内容是“123-456-789-000”,使用可变字符串的方法,将他变为“123456789”


11、创建一个可变字符串,内容是“今日事”,然后改为“今日事,今日毕”,再改为“今日事,必须今日毕”,再改为“今日事,今日毕”(禁用setString)


0 0