OC基础--字符串

来源:互联网 发布:文案策划软件 编辑:程序博客网 时间:2024/05/26 20:21

字符串分为两种:

1.不可变字符串:NSString    会产生一个新的字符串,一般方法会返回NSString *

2.可变字符串:NSMutableString  都是对自身内容进行修改,在访问的时候字符串已经发生改变,一般没有返回值


************************不可变字符串*******************************

1.创建字符串对象方法:

(1)字面量

NSString *str = @"杨林dfssfsdg";

(2)通过自定义初始化方式创建(系统不推荐)

NSString *str = [[NSString alloc]init]; //创建空字符串

NSString *str = [[NSString alloc]initWithString:@"liushanshan"]; //赋初值字符串

NSLog(@"%@", str); //输出

(3)利用系统提供的便利构造器的方法

NSString *str =[NSString stringWithString:@"姗姗"];

2.NSString的使用方法

(1)substring 截取字符串3种

       substringFromIndex从第几位开始,到字符串结束(包括下标位置)

       substringToIndex 从第0位开始到当前位置(不包括下标位置)

       NSRange 有范围的截取: NSRange是一个结构体,提供了两个成员变量,一个是起始位置,一个是长度

       NSString *str = @"nihao,wodemingzijiaoliushanshan";

       NSLog(@"%@", [str substringFromIndex:5]); 

       NSLog(@"%@", [str substringToIndex:5]);


       NSRange range = {3, 7};

       NSLog(@"%@", [str substringWithRange:range]);

       NSLog(@"%@",[str substringWithRange:NSMakeRange(3, 7)]);


             


(2判断是否有前缀 hasPrefix

NSString *str = @"liushanshan";

NSString *prefix = @"li";

NSLog(@"%d", [str hasPrefix:prefix]);

  有为1,没有为0

(3)把字符串变为基本数据类型 Value

NSString *strNum = @"123sf45";

NSInteger num = [strNum integerValue];

NSLog(@"%ld", num);

结果为:123 注意:遇到字母后,从字母开始到结尾都不打印

(4)把基本数据类型转换成字符串

stringWithFormat: 该方法可以吧任意类型转换成字符串类型,还可以进行拼接

CGFloat g = 3.14;

NSInteger a  = 100;

NSString *str = [NSString stringWithFormat:@"%ld%g%@", a, g, @"lish"];

NSLog(@"%@", str);

                         

(5)小写字母变大写字母 uppercaseString

NSString *str = @"liushanshan";

NSLog(@"%@", str.uppercaseString)

(6)大写字母变小写字母 lowercaseString

NSString *str2 = @"li uT Tns han";

NSLog(@"%@", str2.lowercaseString);

(7)单词首字母大写 capitalizedString

注意:只有每一个单词首字母是大写,其余全是小写(以前单词中有大写的也变小写)

NSString *str2 = @"heLLo,woRd";

NSLog(@"%@", str2.capitalizedString);

结果:Hello,Word

(8)比较 compare

对应的结果只有三个,一个是ASC升序,结果为-1;一个是same,结果为0;一个是降序DESC,结果为1

NSString *str = @"nihao";

NSString *newStr = @"buhao";

NSLog(@"%ld", [str compare:newStr]);

                 结果:1

(9)字符串的拼接

NSString *str = @"liushanshan";

NSString *str1 = @"yanglin";

NSString *newStr = [str stringByAppendingString:str1];

NSLog(@"%@", newStr);

 结果为:liushanshanyanglin

(10)替换

第一个参数:字符串原有的内容

第二个参数:要替换的内容

NSString *str = @"刘珊珊没事玩玩游戏";

NSString *newStr = [str stringByReplacingOccurrencesOfString:@"" withString:@""];

   NSLog(@"%@", newStr);

结果:杨姗姗没事玩玩游戏

(11)比较字符串内容是否相同  相同为1,不同为0

NSString *str1 = @"nihao";

NSString *str2= @"nihao";

NSLog(@"%d", [str1 isEqualToString:str2]);

结果:1

11.截取

NSString *endTime = @"sddfwefgwsdffdg";

NSString *newEnd = [endTime substringFromIndex:10];

NSLog(@"%@", newEnd);

结果:dffdg





****************************可变字符串*******************************

NSMutableString: NSString的子类,一般对自身进行操作

注意:字面量的方式创建的是不可变字符串,不可用该方法创建可变字符串,只可以拿不可变的指针来接受

1.创建可变字符串

(1)初始化方式

 NSMutableString *str =[[NSMutableString alloc]init]; //赋空值

 NSMutableString *str = [[NSMutableString alloc]initWithString:@"tengfei"];// 创建并赋值

 NSLog(@"%@", str);

(2)便利构造器方式

NSMutableString *str = [NSMutableString stringWithString:@"shangshuai"];

NSLog(@"%@", str);

2.可见字符串使用方法

(1)插入

NSMutableString *str = [NSMutableStringstringWithString:@"nihao,wodemingzi jiao yanglin"];

[str insertString:@"商帅" atIndex:3];

NSLog(@"%@", str);

                

(2)替换

NSMutableString *str = [NSMutableString stringWithString:@"nihao,wodemingzi jiao yanglin"];

[str replaceCharactersInRange:NSMakeRange(3, 1) withString:@"商帅" ];

NSLog(@"%@", str);

        

注意:第一个参数为替换位置,第二个为所替换的字符串所占的长度,如为1,则占用被替换字符串一个字符空间,如为0,则不占用,只需要在替换位置直接插入即可

(3)全部替换

NSMutableString *str = [NSMutableString stringWithString:@"nihao,wodemingzi jiao yanglin"];

[str setString:@"woshi"];

NSLog(@"%@", str);

结果:woshi

(4)拼接(同不可变的比较)

NSMutableString *str = [NSMutableString stringWithString:@"nihao,wodemingzi jiao yanglin"];

[str appendString:@"商帅"];

 NSLog(@"%@", str);

 


例题:

给定一个图片文件名,判断字符串是否以"png"结尾,如果是就替换成"jpg",不是就拼接".jpg"

 NSString *name = @"shangshuai.avi";

   if ([name hasSuffix:@"png"]) {

       name = [name stringByReplacingOccurrencesOfString:@".avi"withString:@".jpg"];

   }else{

       name = [name stringByAppendingString:@".jpg"];

   }

 NSLog(@"%@", name);


    

******************有关NSLog*****************

    NSString *str = @"杨林dfertfsdg";

   NSLog(@"%ld", str.length);  //字符串的长度    11

   NSLog(@"%c", [str characterAtIndex:3]);  //通过指定下标,获取字符内容   f

   NSLog(@"%C", [str characterAtIndex:1]);  //打印汉字用大的%C  林



0 0
原创粉丝点击