Objective-C( Foundation框架 一 字符串)

Objective-C 中核心处理字符串的类是 NSString 与 NSMutableString ,这两个类最大的区别就是NSString 创建赋值以后该字符串的内容与长度不能在动态的更改,除非重新给这个字符串赋值。而NSMutableString 创建赋值以后可以动态在该字符串上更改内容与长度。

创建NSString字符串:
NSString 与 char* 最大的区别就是 NSString是一个objective对象,而char* 是一个字节数组。@+ " 字符串 " 这个符号为objective-c NSString 字符串常量的标准用法,char* 创建的时候 无需添加@
    // 创建字符串
    NSString *str = @"jack";
    NSString *s1 = [[NSString alloc] initWithFormat:@"age = %d" ,10];
   
   // c字符串转oc字符串
    NSString *s2 = [[NSString alloc] initWithUTF8String:"jack"];

    // oc 转 c
    const char *c1 = [s2 UTF8String];
    NSLog(@"%s", c1);

字符串的遍历

    
    NSString *str = @"ni hao peng you";
    for (int i = 0; i < str.length; i++) {
        unichar c = [str characterAtIndex:i];
        NSLog(@"%c",c);
    }

NSURL

// NSUTF8StringEncoding 用到中文可以用这个
   // 传进来文件路径可以查看文件
    NSString *s3 = [[NSString alloc] initWithContentsOfFile:"/Users/apple/Desktop/1.txt" encoding:NSUTF8StringEncoding error:nil];
   /*URL :资源路径
    协议头://路径
    file://
    ftp://
    http://www.baidu.com
   */
  // 在 iOS 程序访问 HTTP 资源时需要对 URL 进行 Encode
     // NSURL *url = [[NSURL alloc] initWithString:@"file:///Users/apple/Desktop/1.txt"];

      NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/1.txt"];

    
    NSString *s4 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
    NSLog(@"s4=
%@", s4);

NSString :不可变字符串

NSMutableString :可变字符串

字符串中拼接


    // 创建字符串
    NSMutableString *s = [NSMutableString stringWithFormat:@"my age is 23"];
    // 拼接内容到s的后面
    [s appendString:@" 3 21"];

字符串中删除元素

stringWithString 方法:用于创建字符串初始化赋值
rangeOfString方法:传入字符串返回一个在该字符串中的范围 也可以写 NSMakeRange(0, 3) 意思是范围在字符串0位到第3位
deleteCharactersInRange:删除字符串 参数为Range 就是删除的范围。
 
//创建字符串  
    NSMutableString *str = [NSMutableString stringWithString:@"haha 你好!!"];  
    //删除字符串中含"haha"的字符  
    [str deleteCharactersInRange: [str rangeOfString: @"haha"]];      
    NSLog(@"str = %@",str); 

 字符串查找

查找一个字符串在另一个字符串首次出现的位置

    NSString *s = @"abciOSdefg";
    NSString *s1 = @"iOS";
    NSRange * range = [s rangeOfString:s1];
    // 判断是否找到字符串
    if(range.location!NSNotFound){
    NSLog(@"%lu,%lu",range,location, range.length);
    }else{
          NSLog(@"没有找到字符串位置");
    }
    

 判断字符串是否相同

    // 字符串是否相同
    NSString *s1 = @"abc";
    
    NSString *s2 = [NSString stringWithFormat:@"abc"];
    
    if ([s1 isEqualToString:s2]) {
        NSLog(@"相同");
    }else{
        NSLog(@"不相同");
    }
    

字符串截取

   
    NSString *str = @"012345678";
    // 从元素下标为3的位置开始往后截取,(包含下标为3的位置的元素)
    NSString *str1 = [str substringFromIndex:3];
    NSLog(@"str1 = %@",str1);
    // 从开始位置截取到3位(不包含下标为3的位置的元素)
    NSString *str2 = [str substringToIndex:3];
    NSLog(@"str2 = %@",str2);
    // 截取某段位置的字符进行输出
    NSRange range ={2,3};
    NSString *str3 = [str substringWithRange:range];
    NSLog(@"str3 = %@",str3);
    // 截取某段位置的字符
    //                         012345  789
    NSString *str = @"aaaaa<你好>aaaaaa";
    NSUInteger loc = [str rangeOfString:@"<"].location + 1; // 传的位置
    NSUInteger len = [str rangeOfString:@">"].location - loc; // 要截取的字符长度
    
    NSRange r1 = {loc, len};
    
    NSString *subStr = [str substringWithRange:r1];
    NSLog(@"subStr = %@", subStr);

字符串的替换

   // 字符串的替换
    NSString *str = @"adadwffdtoiajdfa";
    
    // str stringByReplacingOccurrencesOfString:@"源字符串" withString:@"要替换成的新内容"
    // 把a替换成/
    NSString * newStr = [str stringByReplacingOccurrencesOfString:@"a" withString:@"/"];
    NSLog(@"newStr = %@", str);
    
    // 把字符串中的空格去掉
    str = @" adad wff dt oiaj df a";
    newStr = [str stringByReplacingOccurrencesOfString:@" " withString:@""];
    NSLog(@"newStr = %@", newStr);
    
    // 把字符串中空格去掉,把星号替换成/
    str = @"http ** www* baidu* com*";
    
    newStr = [str stringByReplacingOccurrencesOfString:@" " withString:@""];
    NSString *newStr1 = [newStr stringByReplacingOccurrencesOfString:@"*" withString:@"/"];
    NSLog(@"newStr1 = %@",newStr1);

 

原文地址:https://www.cnblogs.com/1023843587qq/p/4771986.html