zoukankan      html  css  js  c++  java
  • IOS ——OC——NSString的用法大全

    "NSString *"这个数据类型代表一个NSString对象的指针,不是NSString对象本身。

    "NSMutableString *"这个数据类型则是代表"NSMutableString"对象本身,这两者是有区别的。

    这也是有的时候我们使用NSMutableString类型字符串时,要使用copy的原因,因为可能不想改变新的字符串时影响到旧的字符串的值。

    一、字符串的创建方式:
    1.快捷方式:
    NSString *str = @"我在学习oc!";
     NSString *str2 = [[NSString alloc] initWithString: @"我在学习OC”];(这种方式已被NSString *str = @"我在学习oc!”取代)
    2.alloc方式:
    NSString *str2 = [[NSString alloc] initWithString: @"我在学习OC"];  
    3.类方式:
     NSString *str4 = [NSString stringWithFormat:@"(通过类方法创建)我正在学习%@",@"oc"];
    4.通过格式化符:
    NSString *str3 = [NSString stringWithFormat: @"我在学习%@",@"OC"];
    NSString 的使用: 
    二、字符串的使用:
    (1)字符串比较(比较的是地址)
            NSString *str5 = [NSString stringWithFormat:@"我在学习!"];
            NSString *str6 = [NSString stringWithFormat:@"我在学习!"];
            if(str5 != str6)
            NSLog(@"比较的是地址,这两个字符串的地址不相同!");
    (2)字符串比较(比较的是内容判断是否相等!)
            NSString *str7 = [NSString stringWithFormat:@"我在学习!"];
            NSString *str8 = [NSString stringWithFormat:@"我在学习!"];
            BOOL isEqual=[str7 isEqualToString:str8];
            if(isEqual)
            NSLog(@"这两个字符串的内容一样!");
    (3)比较字符串大小:
     NSString *str9 = [NSString stringWithFormat:@"张宇"];
            NSString *str10 = [NSString stringWithFormat:@"张三"];
            NSComparisonResult result = [str9 caseInsensitiveCompare:str10];
            if(result==NSOrderedAscending)
                NSLog(@"str9>str10(升序)");
            if(result==NSOrderedSame)
                NSLog(@"str9=str10(内容相同)");
            if(result==NSOrderedDescending)
                NSLog(@"str9<str10(降序)");
    (4)访问字符串的长度:
     NSString *str11 = @"i o eru fhh f";
            long len=[str11 length];
            NSLog(@"str11= %ld",len);//(可以自动识别空格!)
    (5)大小写转换:
    NSString *str12 = @"hello Zhangy!";
            NSLog(@"%@",[str12 uppercaseString]);//全部转换成大写
            NSLog(@"%@",[str12 lowercaseString]);//全部转换成小写
            NSLog(@"%@",[str12 capitalizedString]); //单词首字母大写其它部分转小写
    HELLO ZHANGY!
    hello zhangy!
    Hello Zhangy!
    (6)转换基本数据类型:(将字符串型的数转换成具体的数字!)
    1.字符串转换成整型 注意:只有字符串内容是整型时,才可以转换成功
    NSString *str13 = @"11";
            int a = [str13 intValue];
            NSLog(@"%d",a);
    2.字符串转换成浮点型 注意:只有字符串内容是数字时,才可以转换成功
    NSString *str14 = @"11.11";
            float b = [str14 floatValue];
            NSLog(@"%f",b);
    NSString *str15 = @"22";
            BOOL flag = [str15 boolValue];
            NSLog(@"%d",flag);
    运行结果:
    11
    11.110000
    1
    (7)字符串的截取:
     
    1.//分割字符串!(将字符串分割成为数组)
            NSString *str16 = @"abcde fghi";
            NSArray *array = [str16 componentsSeparatedByString:@" "];
            NSLog(@"arry=%@",array);
    2.//访问指定位置上的字符:(字符串的遍历是从0开始的!)
            char c = [str16 characterAtIndex:3];
            NSLog(@"c=%c",c);
    3.//截取从指定位置的字符到字符串末尾并赋给str17 (包括指定位置上的字符);
            NSString *str17 = [str16 substringFromIndex:2];
            NSLog(@"str17=%@",str17);
    4.//从字符串的开头截取到指定位置的字符并赋给str18(不包括指定位置上的字符!)
            NSString *str18 = [str16 substringToIndex:3];
            NSLog(@"str18=%@",str18);
    5.//截取字符串中指定范围的字符并赋给str19(包括指定范围上的字符)
            NSRange rang1 = NSMakeRange(1, 3);//指定一个范围;
            NSString *str19 = [str16 substringWithRange:rang1];//进行截取
            NSLog(@"str19=%@",str19);
    6.//字符串拼接,将后面的拼到前面的字符串赋给一个新的字符串;
            NSString *str20 = @"hello ";
            NSString *str21 = @"word!";
            NSString *str22 =[str20 stringByAppendingFormat:@"%@",str21];
            NSLog(@"str22=%@",str22);//第一种方法
            NSString *str23 = [str20 stringByAppendingString:str21];//第二种方法
            NSString *str24 = [NSString stringWithFormat:@"%@%@",str20,str21];//第三种方法
            NSLog(@"str23=%@ str24=%@",str23,str24);
     
    7.//给定子串在指定的字符串中的位置和子串的长度。
            NSString *str25 = @"123456789@qq.com";
            NSString *str26 = @"qq.com";
            NSRange rang2 = [str25 rangeOfString:str26];
            if (rang2.location != NSNotFound)
            {
                NSLog(@"找到了该子串!");
                NSLog(@"位置 %ld 长度 %ld ",rang2.location,rang2.length);         }
    8.//字符或者子串的替换。
            NSString *str27 = [str25 stringByReplacingOccurrencesOfString:@"123" withString:@"333];//将123替换成333.
            NSLog(@"str27 = %@",str27);
    9.判断原有字符串中是否包含某个子串;
    NSRange range = [str25 rangeOfString:@"@"];
        if (range.location != NSNotFound) {
            return YES;
        }
        return NO;
    }
    [str25 containsString:@"@]//也可以用于判断是否包含
     
    运行的结果:
     str = 我在学习oc!
     
    比较的是地址,这两个字符串的地址不相同!
     这两个字符串的内容一样!
     str9<str10(降序)
     str11= 13
     HELLO LIU GUAN!
     hello liu guan!
     Hello Liu Guan!
     11
     11.110000
     0
    arry=(
    "abcde fghi"
    )
    c=d
    str17=cde fghi
    str18=abc
    str19=bcd
    str22=hello word!
    str23=hello word!
    找到了该子串!
    位置
    10 长度 6
    例:
    2、编写程序,将”Hello World and Sunshine.”字符串中的”World”替换为”iBokanWisdom”,并将替换前和替换后的字符串输出
     
    使用NSString两种替换方法完成
     
    #import <Foundation/Foundation.h>
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            //第一种方法
            NSString *str1 = @"Hello World and Sunshine.";
            NSString *str2 = [NSString stringWithFormat:@"iBokanWisdom "];
            NSString *str3 = [str1 stringByReplacingOccurrencesOfString:@"World" withString:str2];
            NSLog(@"替换前str1=%@",str1);
            NSLog(@"替换后str3=%@",str3);
            //第二种方法
            NSMutableString *str4 = [NSMutableString stringWithString:@"Hello World and Sunshine."];
            NSLog(@"替换前str4=%@",str4);
            NSRange range = NSMakeRange(6, 6);
            [str4 deleteCharactersInRange:range];
            [str4 insertString:str2 atIndex:6];       
            NSLog(@"替换后str4=%@",str4);
        }
        return 0;
    }
    运行结果:
     替换前str1=Hello World and Sunshine.
     
    替换后str3=Hello iBokanWisdom  and Sunshine.
     
    替换前str4=Hello World and Sunshine.
     替换后str4=Hello iBokanWisdom and Sunshine.
    感谢您的访问! 若对您有帮助或有兴趣请关注博客:http://www.cnblogs.com/Rong-Shengcom/
  • 相关阅读:
    css中优先级与层叠
    微服务通过feign.RequestInterceptor传递参数
    maven详解
    Java8新特性interface中的static方法和default方法
    设计模式六大原则---转
    MySQL主从复制作用和原理
    Mysql Binlog三种格式详细介绍
    分布式主键生成逻辑总结--转
    java幂等性的解决方案
    spring事务的传播机制新解
  • 原文地址:https://www.cnblogs.com/Rong-Shengcom/p/4955787.html
Copyright © 2011-2022 走看看