zoukankan      html  css  js  c++  java
  • Foundation框架(NSString、NSMutableString)

    OC字符串(NSString、NSMutableString)

    概述:在Object C中存在两个类用于操作字符串,NSString和NSMutableString;NSString在赋值之后不能修改其内容和长度,而NSMutableString可以动态的修改字符串内容和长度。

    一、NSString

    1、NSString的多种定义方式

      1)使用@符号快速创建一个字符串

            NSString *str1 = @“jack”;  

      2)使用对象初始化方法 initWithString

       NSString *str2 = [[NSString alloc] initWithString:@“jack”]; 

      3)使用对象格式化方法 initWithFormat

       NSString *str3 = [[NSString alloc] initWithFormat:@"age is %d", 10]; 

      4)使用类字符串格式化方法 stringWithFormat

       NSString *s3 = [NSString stringWithFormat:@“age is %d”,10]; 

      5)将一个c语言字符串转化成oc字符串

     1 char *name = "jack";  //定义一个c语言字符串
     2 NSString *s4 = [[NSString alloc] initWithUTF8String:name]; 
     3 //传入一个c语言字符串变量,也可以直接传入一个c语言字符串      
     4 //C语言字符串 —> OC字符串
     5 const char *cs = [s4 UTF8String];       // OC字符串 —> C语言字符串 

      6)从一个文件中读取字符串

     1 NSString *path = @"/Users/tangge/Desktop/tt.txt";
     2 NSError *error = nil;   //用NSError类 定义一个变量保留错误信息
     3 NSString *s5 = [[NSString  alloc]initWithContentsOfFile:path           encoding:NSUTF8StringEncoding error:nil];      
     4 //使用对象方法initWithContentsOfFile从文件中读取字符串
     5 if (error ==nil) {
     6         NSLog(@"str = %@",str);
     7     }
     8     else
     9     {
    10         NSLog(@"error = %@",[error localizedDescription]);
    11     }
    12 
    13 
    14 NSString *str5 = [NSString stringWithContentsOfFile:path encoding: NSUTF8StringEncoding error:nil];  
    15 //使用对象方法stringWithContentsOfFile从文件中读取字符串  
    16 //从文件读取字符串使用的是绝对路径,不需要对路径进行编码

      7)从URL中读取字符串

     1  NSString *path = @"file://192.168.13.10/Users/xiaomage/Desktop/课堂共享/day17/note/lnj.txt"; //获取一个文件的路径
     2 //NSString *path = @"file:///Users/xiaomage/Desktop/课堂共享/day17/note/lnj.txt"; //如果访问本机文件,可以省略主机地址  file:///
     3 //通过以上两种方式获取的路径中含有中文需要进行编码处理
     4 path = [path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
     5 
     6 
     7 NSURL *url = [NSURL fileURLWithPath:path];  //通过类工厂方法创建一个url
     8 //NSURL *url = [NSURL alloc] initWithString:path];//也可以通过对象方法创建url
     9 //NSURL *url = [NSURL URLWithString:path]; 也可以通过这种方式创建url
    10 //通过fileURLWithPath方法传进来的路径默认已经进行过编码处理,不需要进行编码处理
    11 
    12  NSString *str = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];
    13 //调用NSString的类方法stringWithContentsOfURL 实现从URL路径中读取字符串

      8)将字符串写入文件

    • 通过writeToFile方法
    1 NSString *str = @"iOS0601基础班";
    2 // atomically 如果传入YES, 字符串写入文件的过程中如果没有写完, 那么不会生成文件
    3 // 如果传入NO, 字符串写入文件的过程中如果没有写完, 会生成文件
    4 NSString *path2 = @"/Users/xiaomage/Desktop/abc.txt";
    5 BOOL flag = [str writeToFile:path2 atomically:YES encoding:NSUTF8StringEncoding error:nil];
    6 NSLog(@"flag = %i", flag);  //写入成功返回YES,写入失败返回NO
    • 通过writeToURL方法
    1 NSString *str = @"abcdef";
    2 NSURL *url = [NSURL fileURLWithPath:@"/Users/xiaomage/Desktop/123.txt"];
    3 BOOL flag = [str writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:nil];
    4 // 注意点: 如果重复写入, 后一次写入的会覆盖前一次写入的内容
    5 NSString *str2 = @"我们号";
    6 [str2 writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:nil];

    2、字符串的基本操作

      1)将字符串变为小写

    1 NSString *str1 = @"aBc iS bIS Bid ";
    2 NSString *s = [str1 lowercaseString];  //调用lowercaseString方法
    3 NSLog(@"s = %@",s);  //输出结果:s = abc is bis bid 

      2)将字符串变为小写

    NSString *str1 = @"aBc iS bIS Bid ";
    NSString *s = [str1 uppercaseString];  //调用 uppercaseString
    NSLog(@"s = %@",s);   //输出结果:s = ABC IS BIS BID

      3)将字符串首字母变为大写

    1  NSString *str1 = @"abc is bis bid";
    2  NSString *s = [str1 capitalizedString];  //调用 capitalizedString
    3  NSLog(@"flag = %d",flag);  //输出结果:s = Abc Is Bis Bid

      4)判断两个字符串的内容是否相同

    NSString *str1 = @"abc";
    NSString *str2 = @"ABC";
    // 比较两个字符串的"内容"是否相同
    BOOL flag = [str1 isEqualToString:str2];
    NSLog(@"flag = %i", flag); //如果内容相同NSOrderedSame,不同返回NO,相同返回YES

      5)比较两个字符串的大小

     1  //比较两个字符串大小
     2 NSString *str1 = @"abc";
     3 NSString *str2 = @"ABC";
     4 switch ([str1 compare:str2]) {
     5 case NSOrderedAscending:
     6 NSLog(@"str1 小于 str2");  //NSOrderedAscending  升序前面的小于后面
     7 break;
     8 case NSOrderedSame:
     9 NSLog(@"str1 等于 str2");  //NSOrderedSame  前后两个对象 相等
    10 break;
    11 default:
    12 NSLog(@"str1 大于 str2");   //NSOrderedDescending 降序前面大于后面字符串
    13      break;
    14    }
    15 
    16 /*
    17 //忽略大小写进比较 caseInsensitiveCompare忽略大小写进行比较
    18     switch ([str1 caseInsensitiveCompare:str2]) {
    19         case NSOrderedAscending:
    20             NSLog(@"str1 小于 str2");
    21             break;
    22         case NSOrderedDescending:
    23             NSLog(@"str1 大于 str2");
    24             break;
    25         default:
    26             NSLog(@"str1 等于 str2");
    27             break;
    28     }
    29 
    30 */

    3、字符串的截取

      1)判断字符串以什么开头

     1 NSString *str = @"http://www.520it.com/img/lnj.gif";
     2     // 判断是否以 ”http://“ 么开头
     3     // 本质就是从字符串的第一个字符开始匹配, 只要不匹配就返回NO
     4     if ([str hasPrefix:@"http://"]) {
     5         NSLog(@"是一个URL");
     6     }else
     7     {
     8         NSLog(@"不是一个URL");
     9     }
    10   

      2)判断字符串以什么结尾

    1 NSString *str = @"http://www.520it.com/img/lnj.gif";
    2 //判断是否以".gif"结尾 
    3 //本质就是从字符串的最后一个字符开始匹配, 只要不匹配就返回NO
    4 if ([str hasSuffix:@".gif"]) {
    5 NSLog(@"动态图片");
    6 }else{
    7 NSLog(@"不是动态图片");
    8 }

      3)判断字符串中是否包含520it.com

       

     1 NSString *str = @"http://www.520it.com/img/lnj.gif"
     2 NSRange range =  [str rangeOfString:@"lnj"];
     3 //NSRange是OC中的结构体 ,有location、length两个成员变量
     4 // location从0开始 , length从1开始
     5 // 只要str中包含该字符串, 那么就会返回该字符串在str中的起始位置以及该字符串的长度
     6 //如果str中没有需要查找的字符串, 那么返回的range的length=0, location = NSNotFound           
     7 if (range.location == NSNotFound) {
     8       NSLog(@"str中没有需要查找的字符串");
     9     }else{
    10         NSLog(@"str中有需要查找的字符串");
    11       NSLog(@"location = %lu, length = %lu", range.location, range.length);
    12     }

       4)动态的截取一个"小码哥"字符串

     1 //第一种方式 截取“小码哥”三个字符
     2 NSString *str = @"<head>小码哥</head>";
     3 NSRange range = [str rangeOfString:@"小码哥"];
     4 //定义一个结构保存小码哥在字符串中得索引和长度
     5 NSString *newstring = [str substringWithRange:range]; 
     6 NSLog(@"%@",newStr);    //输出的结果:小码哥
     7 
     8 //第二种方式 截取>    </之间的内容
     9 /*
    10 NSString *str = @"<head>小码哥</head>";
    11 NSUInteger location = [str rangeOfString:@">"].location +1;
    12 //以指定的索引开始,一直往后截取  直到字符串结尾
    13 NSString *str1 = [str substringFromIndex: location]; 
    14 NSInteger location2 = [newStr rangeOfString:@"</"].location ;
    15 //从指定的所以开始,一直往前截取
    16 NSString *newStr = [str substringToIndex: location2];
    17 NSLog(@"%@",newStr);  //输出的结果为:小码哥
    18 */

    4.字符串的搜索

      1)用'/'字符替换 '&'

    NSString *str = @"http:&&www.520it.com&img&lnj.gif";
    //参数 stringByReplacingOccurrencesOfString  字符串替换
    NSString *newStr = [str stringByReplacingOccurrencesOfString:@"&" withString:@"/"];
    NSLog(@"%@",newStr);// http://www.520it.com/img/lnj.gif

       2)去除字符串中的空格

    NSString *str = @"   http:   &&www.   520it.com   &img&lnj.gif   ";
    NSString *newStr = [str stringByReplacingOccurrencesOfString:@" " withString:@""];
    NSLog(@"《 %@ 》",newStr);
    //输出的结果是:http:&&www.520it.com&img&lnj.gif

      3)去除字符串中首尾字符

    1 NSString *str = @"   http:&&www.520it.com&img&lnj.gif   ";
    2 NSCharacterSet *set = [NSCharacterSet whitespaceCharacterSet];
    3 NSString *newStr = [str stringByTrimmingCharactersInSet:set];
    4 NSLog(@"%@",newStr); //输出的结果:http:&&www.520it.com&img&lnj.gif

      4)取出字符串中首尾的大写

    1 NSString *str = @"HTTP://www.520it.com/img/LNJ.GIF";
    2 NSCharacterSet *set = [NSCharacterSet uppercaseLetterCharacterSet];
    3 NSString *newStr = [str stringByTrimmingCharactersInSet:set];
    4 NSLog(@"%@",newStr);//输出结果:://www.520it.com/img/LNJ.

      5)去除首尾的"***"

    NSString *str =  @"***http://520it.com/im*g/ljn.gif***";
    NSCharacterSet *set = [NSCharacterSet characterSetWithCharactersInString:@"*"];
    NSString *newStr = [str stringByTrimmingCharactersInSet:set];
    NSLog(@"newStr =%@", newStr);//输出结果:http://520it.com/im*g/ljn.gif

      

    5.路径字符串处理

      1)判断字符串是否是绝对路径

    1 NSString *str = @"/Users/tangge/Desktop/赵玉堂.txt";
    2 // 本质就是判断字符串是否以 “/”开头
    3     if ([str isAbsolutePath]) {
    4         NSLog(@"是绝对路径");
    5     }
    6     else
    7     {
    8         NSLog(@"不是绝对路径");
    9     }

      2)获取文件中最后一个目录

    1 NSString *str = @"/Users/tangge/Desktop/赵玉堂.txt";
    2 //本质就是获取最后一个/后面的内容
    3 NSString *newStr = [str lastPathComponent];
    4 NSLog(@"%@",newStr);  //输出的结果:赵玉堂.txt

      3)删除路径中得最后一个目录

    1 NSString *str = @"/Users/tangge/Desktop/赵玉堂.txt";
    2 //本质就是删除最后一个 / 后面的内容
    3 NSString *newStr = [str stringByDeletingLastPathComponent];
    4 NSLog(@"%@",newStr); //输出结果:/Users/tangge/Desktop

      4)给文件添加一个目录

    1 NSString *str = @"/Users/tangge/Desktop/赵玉堂.txt";
    2 //本质就是在字符串 后面 添加 / 和类容
    3 NSString *newStr = [str stringByAppendingPathComponent:@"doc"];
    4 NSLog(@"%@",newStr); 输出结果:/Users/tangge/Desktop/赵玉堂.txt/doc

       5)获取文件扩展名

    1 NSString *str = @"/Users/tangge/Desktop/赵玉堂.txt";
    2 //获取文件的扩展名,本质就是从字符串末尾开始查找.,截取第一个 . 后面的内容
    3 NSString *newStr = [str pathExtension];
    4 NSLog(@"%@",newStr); //输出结果:txt

       6)删除文件扩展名

    1 NSString *str = @"/Users/tangge/Desktop/赵玉堂.txt";
    2 //删除文件中的扩展名 ,本质就是从字符串末尾开始查找 . , 删除 第一个 .和后面的内容
    3 NSString *newStr = [str stringByDeletingPathExtension];
    4 NSLog(@"%@",newStr); //输出的结果:/Users/tangge/Desktop/赵玉堂

      7)给文件添加拓展名

    1 NSString *str = @"/Users/tangge/Desktop/赵玉堂.txt";
    2 NSString *newStr = [str stringByAppendingPathExtension:@"jpg"];
    3 NSLog(@"%@",newStr); //输出结果:/Users/tangge/Desktop/赵玉堂.txt.jpg

    6.将字符串转换成基本数据类型

      1)将字符串转换成int数据类型

    1 NSString *str1 = @"110";
    2 NSString *str2 = @"5.6";
    3 //将字符串类型转换成 int类型
    4 int value = [str1 intValue];
    5 double value1 = [str2 doubleValue];
    6 NSLog(@"%d,%lf",value,value1);  //输出结果:110,5.600000

     

    二、NSMutableString

    1、创建NSMutableString字符串    

     1 //类方法创建NSMutableString字符串
     2 NSMutableString *str = [NSMutableString string];  //创建一个空得NSMutableString
     3 NSMutableString *str = [NSMutableString stringWithString:@“zyt"];    //定义并初始化一个NSMutableString字符串
     4 NSMutableString *s1 = [NSMutableString stringWithFormat:@"my age is 10”]; //格式化一个字符串
     5 //类方法创建NSString字符串
     6 /*
     7 NSString *s3 = [NSString stringWithFormat:@“age is %d”,10];
     8 */
     9 //对象方法创建NSMutableString字符串
    10 NSMutableString *str = [[NSMutableString alloc]init];  //创建一个空的字符串
    11 NSMutableString *str = [[NSMutableString alloc] initWithFormat:@"zyt"];
    12 //对象方法创建NSString字符串
    13 /*
    14 NSString *str1 = @“jack”;   //快速创建一个字符串
    15 NSString *str2 = [[NSString alloc] initWithString:@“jack”];
    16 NSString *str3 = [[NSString alloc] initWithFormat:@"age is %d", 10];
    17 */

    2.NSMutableString和NSString比较

    1  NSMutableString *str = [NSMutableString stringWithFormat:@"www.520it.com"];
    2 //在字符串后面添加上/image,返回自身,不会生成新的字符串
    3 [str appendString:@"/image"];
    4 NSLog(@"%@",str);
    5 //不可变字符串添加/image ,会生成一个新的字符串
    6 NSString *str1 = @"www.baidu.com";
    7 NSString*newStr =[str1 stringByAppendingPathComponent:@"jpg"];
    8 NSLog(@"%@",newStr);

    3.NSMutableString简单实用

      1)删除字符串中得指定字符

    1 NSMutableString *strM = [NSMutableString stringWithFormat:@"www.520it.com.520"];
    2 NSRange range = [strM rangeOfString:@"520"];
    3 [strM deleteCharactersInRange:range]; //默认是删除第一个520
    4 NSLog(@"%@",strM);  //输出结果:www.it.com.520

      2)在字符串指定位置插入一个字符串  

    1 //在520这个单词前面添加个love单词
    2 NSMutableString *strM = [NSMutableString stringWithFormat:@"www.520it.com.520"];
    3 NSRange range = [strM rangeOfString:@"520"];
    4 [strM insertString:@"love" atIndex:range.location];
    5 NSLog(@"%@",strM);  //输出结果:www.love520it.com.520

      3)将字符串指定的字符串替换 

    1 NSMutableString *strM = [NSMutableString stringWithFormat:@"www.520it.com.520"];
    2 /* 实用NSString 的stringByReplacingOccurrencesOfString方法
    3 NSString *str = [strM stringByReplacingOccurrencesOfString:@"520" withString:@"530"];
    4 NSLog(@"%@",str); //输出结果:www.530it.com.530
    5 */
    6 NSUInteger count = [strM replaceOccurrencesOfString:@"520" withString:@"530" options:0 range:NSMakeRange(0, strM.length)];
    7 NSLog(@"strM = %@",strM);   //输出结果:strM = www.530it.com.530
    8 NSLog(@"count = %lu",count);//输出结果:count = 2

      4)指定格式字符串拼接

     1 //将3个520it拼接在一起, 中间用空格隔开 520it 520it 520it
     2 //第一种方式 
     3 NSString *str = @"520it";
     4 NSString *newStr = [str stringByAppendingString:@" "]; //只能先顶一个newStr变量
     5 for (int i = 0; i < 2; i++) {
     6 
     7 newStr = [newStr stringByAppendingString:@"520it"];
     8 newStr = [newStr stringByAppendingString:@" "];
     9 }
    10 newStr = [newStr stringByReplacingCharactersInRange:NSMakeRange(newStr.length-1, 1) withString:@""];
    11 NSLog(@"%@",newStr);
    12 
    13 
    14 /*第二种方式
    15 // NSMutableString *str =[NSMutableString stringWithString:@"520it"];
    16 NSMutableString *str = [NSMutableString string];
    17 for (int i = 0; i < 3; i++) {
    18 
    19 [str appendString:@"520it"];
    20 [str appendString:@" "];
    21 
    22 }
    23 
    24 [str deleteCharactersInRange:NSMakeRange(str.length-1, 1)];
    25 
    26 NSLog(@"%@",str);
    27 
    28 */
    29 
    30  /* 第三种方式
    31 NSString *str = @"520it";
    32 NSString *newStr = [str stringByAppendingString:@" "];
    33 newStr = [newStr stringByAppendingString:@"520it"];
    34 newStr = [newStr stringByAppendingString:@" "];
    35 newStr = [newStr stringByAppendingString:@"520it"];
    36 NSLog(@"%@",newStr);
    37      */

       

      

      

  • 相关阅读:
    Lucas定理及其应用
    HDU 5044 TREE
    HDU 5033 Building
    Codeforces Round #238 (Div. 1)
    hdu 4878 ZCC loves words AC自动机+中国剩余定理+快速幂
    HDU 5015 233 Matrix
    HDU 5008 Boring String Problem
    ZOJ 3817 Chinese Knot
    使用AutoMapper
    多租户概念以及FreeLink多租户设计思想
  • 原文地址:https://www.cnblogs.com/zhaoyutang/p/4623376.html
Copyright © 2011-2022 走看看