美文网首页iOS学习
Foundaton框架-->NSString字符串

Foundaton框架-->NSString字符串

作者: 爱貌貌Manners | 来源:发表于2016-10-22 02:29 被阅读106次

    一、如何创建字符串

    • 1.通过字符串常量创建
    • 注意:字符串常量创建多个相同的字符串,打印出来地址一样
       NSString *str1 = @"lm is good man";
      NSString *str11 = @"lm is good man";
      NSLog(@"str1 = %p,str11 = %p", str1,str11);
      
    • 2.通过alloc initWithFormat 创建
    • 只要调用alloc就会在堆内存中开辟一块存储空间
      NSString *str2 = [[NSString alloc] initWithFormat:@"lm is good man"];
      
    • 3.通过类工厂方法创建/ stringWithFormat
      • 内部其实就是封装了alloc init
        NSString *str3 = [NSString stringWithFormat:@"lm"];
        

    二、字符串存储位置

    • 如果是通过字符串常量创建,那么字符串对象存储在常量区中
    • 如果是通过alloc initWithFormat/stringWithFormat创建,那么字符串对象存储在堆区中

    三、字符串创建URL

    • 方法一:URLWithString
    • 此方法不支持中文,URL含有中文需要转码
     NSString *path = @"http://www.baidu.com";
     NSURL *url = [NSURL URLWithString:path];
    
    • 方法二:fileURLWithPath
    • 该方法,系统会自动给我们传入的字符串添加协议头(file://),所以字符串中不需要再写file://
    • 因为URLWithString不支持中文,但是如果是通过fileURLWithString方法创建URL,是支持中文的

    四、字符串含有中文转码stringByAddingPercentEscapesUsingEncoding

    //含有中文,需要处理
         path = [path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    

    五、字符串的读写

    • 1.字符串写writeToFile
    • 2.字符串读stringWithContentsOfFile和stringWithContentsOfURL
    • 如果是URL传入救得需要协议头file

    六、字符串的大小比较:compare

    • 比较字符串的内容是否相同:isEqualToString
    BOOL flag = [str1 isEqualToString:str2];
        NSLog(@"%i", flag);
    
    • 比较字符串的地址是否相同:flag = (str1 == str2)
    flag = (str1 == str2);
        NSLog(@"flag = %i", flag);
    
    • 比较字符串的大小ASCAII值:compare
    • 比较字符串的大小(无大小写):caseInsensitiveCompare

    七、字符串搜索

    • 1.判断是否以什么开头
     BOOL flag1 = [str hasPrefix:@"ab"];
        NSLog(@"%i", flag1);
    
    • 2.判断是否以什么结尾
     BOOL flag2 = [str hasSuffix:@"sl"];
        NSLog(@"%i", flag2);
    
    • 3.判断字符串中是否包含什么字符串
    NSRange rang = [str rangeOfString:@"dde"];
    
        if (rang.location == NSNotFound) {
            NSLog(@"没有查找到相同字符串");
        }else
        {
            NSLog(@"查找到相同字符串");
            NSLog(@"location:%lu,length:%lu", rang.location,rang.length);
    
        }
    

    八、字符串截取

    • substringWithRange

      • 1.动态获取截取的起始位置
      • 2.动态获取截取的长度
    • substringFromIndex

      • 从第几个位置开始截取, 一直截取到最后
    • substringToIndex

      • 从开头开始截取, 一直截取到什么位置

    九、字符串替换

    • 1.替换:stringByReplacingOccurrencesOfString
      NSString *newStr =  [str2 stringByReplacingOccurrencesOfString:@"a" withString:@"B"];
    
    • 2.替换首尾: stringByTrimmingCharactersInSet
        //过滤首尾空格
        NSString *newStr = [str2 stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
        //过滤首尾特定的字符串
         NSString *newStr = [str2 stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"a"]];
    ``
    
    ## 十、字符串和路径
    - 1.判断是否是绝对路径
      - isAbsolutePath
    - 2.获取文件路径中的最后一个目录
      - lastPathComponent
    - 3.删除文件路径中的最后一个目录
      - stringByDeletingLastPathComponent
    - 4.给文件路径添加一个目录
      - stringByAppendingPathComponent
    - 5.获取路径中文件的扩展名
      - pathExtension
    - 6.删除路径中文件的扩展名
      - stringByDeletingPathExtension
    - 7.给文件路径添加一个扩展名
      - stringByAppendingPathExtension
    
    ## 十一.字符串转换「重点」
    
    #### 1.字母大小写转换
    - 1.将字符串转换为大写--> uppercaseString
    - 2.将字符串转换为小写-->  lowercaseString
    - 3.将字符串的首字符转换为大写--> capitalizedString
    
    #### 2、字符串与基本数据类型的转换
     - 字符串转基本数据类型-->intValue、floatValue、doubleValue、integerValue、boolValue
    
    NSString *str1= @"5754";
    NSString *str2= @"5754.5454";
    NSString *str3= @"5754.00";
    
    int int1 = [str1 intValue];
    float flo1 = [str2 floatValue];
    double dou1 = [str3 doubleValue];
    
    NSLog(@"--str1:%@---int1:%i--int1:%d-", str1, str1.intValue, int1);
    NSLog(@"--str2:%@---flo1:%f--flo1:%f-", str2, str2.floatValue, flo1);
    NSLog(@"--str3:%@---dou1:%f--dou1:%f-", str3, str3.doubleValue, dou1);
    
     - 基本数据类型转-->通过字符串的拼接
    
        NSString *str1= [NSString stringWithFormat:@"基本数据类型转字符串%d", int1];
        NSString *str2= [NSString stringWithFormat:@"基本数据类型转字符串%d", flag];
    
        NSLog(@"--str1:%@---int1:%i--int1:%d-", str1, str1.intValue, int1);
        NSLog(@"--%i-,%@", flag, str2);
    
    
    #### 3、字符串和类名之间的转换
    - 类名转字符串-->NSString *NSStringFromClass(Class aClass);
    
    //类名转字符串
    

    NSString *newStr = NSStringFromClass([person class]);
    NSLog(@"%@", NSStringFromClass([person class]));
    NSLog(@"%@", newStr);

    - 字符串转类-->Class __nullable NSClassFromString(NSString *aClassName)
    
    NSString *person = @"person";
    NSLog(@"----%@", NSClassFromString(person));
    
    
    #### 4、字符串和方法名之间的转换
    - 方法名转字符串-->NSString *NSStringFromSelector(SEL aSelector);
    
    //方法名转字符串
    

    NSString *newStr = NSStringFromSelector(@selector(test11));
    NSLog(@"%@", NSStringFromSelector(@selector(test11)));
    NSLog(@"%@", newStr);

    - 字符串转方法名-->NSSelectorFromString(NSString *aSelectorName);
    
    #### 5、字符串与NSData直接的转换
    - 字符串转字典
    
    NSString *str = @"lm";
    NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
    
    - 字典转字符串
    

    NSData * data;
    NSString *result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

    
    #### 6、字符串与数组的转换「请查看数组一节」
    
    
    #### 7、字符串与字典之间的转换「请查看字典一节」
    
    #### 8、字符串转换之字符串拼接技术
    
    - 字符串拼接可以把NSNumber、基本数据类型、等等转换成字符串
    
    NSNumber *num = [NSNumber numberWithBool:YES];   
    NSString *str = [NSString stringWithFormat:@"NSnumber转换字符串:%@", num];
    NSLog(@"%@", str);
    
    
    #### 6、C语言字符串和OC字符串之间的转换
      - stringWithUTF8String
      - UTF8String
    
    
    ## 十二、字符串的属性
    - 1、字符串的长度:length
        ```
         NSUInteger length = [str length];
        NSLog(@"%lu",length);
        ```
    
    ## 十三、字符串的其他方法
    - 7.取出字符串对应位置的字符
      - characterAtIndex:<#(NSUInteger)#>
    
    
    ## 十四、NSMutalbleString基本概念
    
    - NSMutableString是继承NSString的
    - NSString和NSMutableString的区别
      - NSString是不可变的
      - NSMutableString是可变的
    - 创建方法
     - 常用:strM = [NSMutableString stringWithFormat:<#(NSString *), ...#>]
    

    NSMutableString *str = [NSMutableString stringWithFormat:@"我是一个兵"];

    
    ## 十五、NSMutalbleString常用方法
    
    - 1.在字符串后面添加--> appendFormat
    
    NSMutableString *str = [NSMutableString stringWithFormat:@"我是一个兵"];
    [str appendString:@"  保家为人民"];
    NSLog(@"%@", str);
    
    - 2.删除字符串中的什么
      - 我们经常利用rangeOfString和deleteCharactersInRange方法配合起来删除指定的字
    
    - 3.在520前面插入love这个单词
      - insertString
    

    NSRange range = [strM rangeOfString:@"520"];
    [strM insertString:@"love" atIndex:range.location];
    NSLog(@"strM = %@", strM);

    - 4.要求将字符串中的520替换为530
    - replaceOccurrencesOfString
    - 一般情况下OC方法要求传入一个参数如果没有*, 大部分都是枚举
    - 一般情况下如果不想使用枚举的值, 可以传入0, 代表按照系统默认的方式处理
    

    NSUInteger count = [strM replaceOccurrencesOfString:@"520" withString:@"530" options:0 range:NSMakeRange(0, strM.length)];
    NSLog(@"strM = %@", strM);
    NSLog(@"count = %lu", count);

    相关文章

      网友评论

        本文标题:Foundaton框架-->NSString字符串

        本文链接:https://www.haomeiwen.com/subject/xyhcuttx.html