美文网首页iOS的基础数据类型
iOS中的NSString和NSMutableString

iOS中的NSString和NSMutableString

作者: 783480470ed4 | 来源:发表于2018-08-22 22:44 被阅读32次

1、NSString的一些创建和应用

1、OC中专门描述字符串类型的一个类
2、可重复使用
3、字符串一旦创建就不可改变(能改,但是不是改当前str对象了)

是一个对象,对象是可以用alloc创建的:
 NSString *str = [[NSString alloc]init];

这是一个创建对象的方法,但是是一个空值,我们需要一个对象都是要使用的,那么空值的话将毫无意义(但是你可以赋值啊)

2、创建的时候直接赋值

 NSString *str2 = @"helloWorld!";

创建的时候就直接赋值了

 NSString *str3 = [[NSString alloc]initWithString:@"helloWorld!"];

字符串创建的时候如果内容一样的话那么且已存在,那么不会创建新的字符串,内存空间是一样的!这是想相当于两个对象指向一个内存空间

 NSLog(@"str:%p,str2:%@",str2,str3);

自行输出一下就可以看的出来

3、这个占位符方法创建的字符串就算内容相同地址也不一样,这种方法一般适用于字符串拼接

 NSString *str4 = [[NSString alloc]initWithFormat:@"%@",str2];

这时候NSLog输出一下的话会发现内容和str3内容一样,但是内存空间不一样了

 NSString *str5 = [[NSString alloc]initWithFormat:@"%@,%@",str2,str3];

这就相当于拼接,如果你有注意的话会发现这其实和NSLog写法没什么差别,如何使用就自行发挥脑洞了

4、以文件中的内容创建一个字符串,例如保存在桌面的一个文本文件

  NSString *str6 = [NSString stringWithContentsOfFile:@"/Users/Winter/Desktop/test" usedEncoding:NSUTF8StringEncoding error:nil];

文件路径最后需要带上test这个文件名,默认使用UTF-8的的编码也是常用的(例如有中文或者其他语言等),后面的error是我们程序读取错误时该怎么处理,一般也是不会有问题所以我直接写了nil,严谨来说是需要注意的

 NSString *str7 = [NSString stringWithContentsOfURL:@"www.baidu.com" encoding:NSUTF8StringEncoding error:nil];

还一个以网页的内容设置为str的,和本地文件方法类似,当然百度是不可以的,原谅我懒

NSString的一些使用方法:

1、判断字符串是否相同,不是判断地址而是内容,如果返回的是YES就是相同

 BOOL isEqual =  [str2 isEqualToString:str3];

2、比较字符串的大小

 NSComparisonResult steCr =  [str2 compare:str3];
NSOrderedSame = 0 即是相同的
NSOrderedAscending = -1 是后者比前者大
NSOrderedDescending = 1 是前者比后者大
  if (strCr == NSOrderedSame) {
    NSLog(@"他们是相等的");
}else if (strCr == NSOrderedAscending)
{
    NSLog(@"后者比前者大");
}else
{
    NSLog(@"前者比后者大");
}

2、NSMutableString可变字符串

NSMutableString的创建
 NSMutableString *str8 = [[NSMutableString alloc]init];

这时候创建一个空值的str就是有意义的了,因为我们创建的是一个可变string

 NSMutableString *str9 = @"HelloWorld";

这是毫无意义的,虽然代码输入时不会报错,但是在执行修改的时候系统就会报错

 NSMutableString *str10 = [NSMutableString stringWithString:@"HelloWorld"];

而这时候的创建可变的string赋值是可行的,而每次的创建都是新的地址

NSMutableString的增删改查
1、增加
  NSMutableString *str10 = [NSMutableString stringWithString:@"HelloWorld"];
 [str10 insertString:@"My" atIndex:5];
 NSLog(@"str10:%@",str10);

这句话的意思是在str10字符串里第5个位置开始插入了“My”,这时候输出将会得到“HelloMyWorld”

string的下标是从0开始计算的!
 [str10 appendString:@"asd"];

这是在str10后面追加“asd”

 [str10 appendFormat:@"123%@abc",@"end"];

指定格式追加“end”,当然你也可以追加一个string对象也是可以的

2、修改
 NSRange rage = {1,3};//1是位置,3是长度

[str10 replaceCharactersInRange:rage withString:@"ace"];

从1的位置起3个长度单位替换成“ace”

3、删除
 NSMutableString *str10 = [NSMutableString stringWithString:@"HelloWorld"];
 NSRange rage = {1,3};//1是位置,3是长度
 [str10 deleteCharactersInRange:rage];

从1的位置开始3个长度删除,删除后的string后面的位置会自动补齐到前面会得出一个“HoWorld”

4、查
 NSLog(@"str10:%@",str10);

皮一下是会很开心的!

4.1、字符串的截取,或者也可以理解查吧

 NSMutableString *str10 = [NSMutableString stringWithString:@"HelloWorld"];

[str10 substringFromIndex:2];

这是从2下标位置到最后,因为我们只给了开始位置

 NSString *str11 = [str10 substringFromIndex:2];

字符串截取的还是字符串,如果后续还有操作那就设置成NSMutableString

 NSString *str12 = [str10 substringToIndex:3];

这是到哪个位置的截取(不包含指定位置),默认从0开始,也就是0,1,2的位置

 NSRange rage2 = {1,3};

 NSString *str13 = [str10 substringWithRange:rage2];

这时候有了个range,说明也就是指定位置了,从1的位置到3的位置!

5、字符串大小写改变
  [str10 uppercaseString];

这是将字符串的字母内容全部改为大写

[str10 lowercaseString];

这是将所有字符串的字母改为小写

 [str10 capitalizedString];

这是将字符串头字母改为大写

是否有某字符的开头或者结尾

 BOOL kaitou = [str10 hasPrefix:@"kaitou"];

 BOOL jiewei = [str10 hasSuffix:@"jiewei"];

这是的判断语句,返回的是一个BOOL值

相关文章

网友评论

    本文标题:iOS中的NSString和NSMutableString

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