NSString 和 NSMutableString类的常见用法

NSString 和 NSMutableString类的常见的几种用法
NSString和NSMutableString 是Foundation框架下两个常用的处理字符串的类。NSString是静态,而NSSMutableString是动态的。

1. NSString构建字符串

1)最简单的方法,将常量字符串直接赋值给NSString类对象

NSString *str = @"你好!";

2)用NSString类方法可以通过一个C字符串构建OC的字符串
举例:

char *cstr = "你好!";
NSString *str = [NSString stringWithCString : cstr   encoding: NSUTF8StringEncording];//C语言中的字符以UTF8来编码的
NSLog(@"str = %@",str);//输出结果:str = 你好!
stringWithUTF8String可以简化上面的写法
NSString *str = [NSString stringWithUTF8String:"你好!"];

3)NSString 类方法格式化的创建一个字符串

NSString *str = [NSString stringWithFormat:@"%@%d",@"中国"123];
 NSLog(@"%@", str);//输出结果:中国123

4)stringWithString

 举例 
~~ NSString *str = [NSString stringWithString:@"你好"];~~//这种写法不提倡了,可以直接被第一种替代

5)实例(对象)方法创建字符串
[NSString alloc]initWith…

举例
 ~~NSString  *str = [[NSString alloc]initWithString:@"hello123"]; ~~//这样赋值的方式已经不推荐了,可以直接被第一种替代[NSString alloc]initWithString先在堆区申请内存空间,然后赋一个常量字符串,最后把这个常量字符串存到了常量区,之前申请的堆区空间就浪费了,所以不再推荐这样初始化了。

NSString  *str = [[NSString alloc]initWithFormat:@"%d%@", 123,@"中国"];//格式化的初始化
NSLog(@"%@", str);//输出结果:123中国

NSString *str = [[NSString alloc]initWithUTF8String:"中国"];//UTF8编码字符串转成OC字符串
NSLog(@"%@", str);//输出结果:中国

2.对字符串字母进行大小转换处理

1)小写转大写(uppercaseString)

举例
NSString *str = @"abcdEf12";
str = [str uppercaseString];
NSLog(@"%@",str);//输出结果:ABCDEF12

2) 大写转小写(lowercaseString)

NSString *str = @"HELLO WORLD";
str = [str lowercaseString];
NSLog(@"%@",str);//输出结果: hello world

3.判断字符串长度(length)

NSString *str = @"1234abc";//字符串中没有汉字的情况
unsigned long len = [str length];
NSLog(@"len = %lu",len);//输出结果:len = 7

NSString *str1 = @"123中国";//字符串有汉字的情况
unsigned long len1 = [str1 length];
NSLog(@"len1 = %lu",len1);//输出结果:len = 5//这里可以看出在OC中,一个汉字默认占一个字符

而实际上,如果用UTF8编码的话,一个汉字在OC中又占多少个字符呢

NSString *str2 = @"123中国";
unsigned long len2 = [str2 lengthOfBytesUsingEncoding: NSUTF8StringEncoding];
NSLog(@"len2 = %lu",len2);//输出结果:len2 = 9 //由此看出一个汉字占3个字符

4. 判断字符串中是否包含有某个字符串(rangeOfString)

NSString *str1 = @"钓鱼岛是中国的!";
NSString *str2 = @"中国";
//判断str1是否包含str2
NSRange r = [str1 rangeOfString: str2];//rangeOfString 方法返回的是一个NSRange的结构体变量
if(r.location!=NSNotFound)
{
    NSLog(@"r.location = %lu, r.length = %lu",r.location, r.length);//如果包含, 输出str2在str1中开始的索引值,和长度
}
else
{
    NSLog(@"NotFound");//如果不包含
}

5. 字符串内容比较(isEqualToString)

//有两个字符串,比较它们的内容是否一样
NSString *str1 = @"123a";
NSString *str2 = @"123a";
BOOL b = [str1 isEqualToString:str2];//该方法返回的值是BOOL型的,应该用一个BOOL的变量保存
if(b)
{
    NSLog(@"same");
}
else
{
    NSLog(@"different");
}

6. 字符串转数值

NSString *str = @"123";//只能转数值的字符
int a = [str intValue];//转整型
NSLog(@"a = %d", a);//a = 123

NSString *str1 = @"12.3";
double d = [str1 doubleValue];//转double型
NSLog(@"d = %.2f", d);//d = 12.30

7. 判断字符串是否以某个字符串开头或结尾
1)是不是以某个字符串开头的(hasPrefix)

NSString *str1 = @"马化腾";
//判断是不是以"马"开头的名字(假如str1是个人,在不知道全名的情况下,判断str1是不是姓马)
BOOL b = [str1 hasPrefix:@"马"];//hasPrefix方法返回的是BOOL型的数据类型
if(b)
{
    NSLog(@"这个人姓马,他的名字是%@", str1);
}else
{
    NSLog(@"不姓马");
}

2)是不是以某个字符串结尾的(hasSuffix)

NSString *str = @"世界最高峰在中国";
BOOL b = [str hasSuffix:@"中国"];//hasSuffix方法返回的也是BOOL型数据
if(b)
{
    NSLog(@"是以“中国”结尾的一句话");
}
else
{
    NSLog(@"不是");
}

8. 从某个字符串中提取子字符串

1)从字符串的某个索引位置开始提取(substringFromIndex)

    NSString *str = @"爱你的虎口我脱离了危险";
    str = [str substringFromIndex:5];//提取从索引为5(我)的字符开始到字符串结尾
    NSLog(@"%@",str);//输出结果:我脱离了危险

2) 提取从字符串的开头到某个索引位置之前的部分(substringToIndex)

    NSString *str = @"abcdefgh";
    str = [str substringToIndex:3];
    NSLog(@"%@",str);//输出结果:abc

3)提取字符串中某个范围的子字符串(substringWithRange)

    NSString *str = @"钢铁锅寒夜里喊修瓢锅";
    NSRange r = {43};
    str = [str substringWithRange:r];
    NSLog(@"%@",str);//输出结果:夜里喊

4)应用:”123456abc”逆序输出

    NSString *str = @"12345abc";
    NSRange r = {0,1};
    for(long i=[str length]-1;i>=0;i--)
    {
        r.location = i;
        NSLog(@"%@",[str substringWithRange:r]);
    }

9. 删除字符串两端的空格

    NSString *str1 = @"我们 "; 
    NSString *str2 = @" 是";
    NSString *str3 = @"程序猿";
    str1 = [str1 stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];//这么长的方法,我也是醉了,必须靠Xcode提示啊
    str2 = [str2 stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
    NSLog(@"%@%@%@",str1,str2,str3);//打印出来看看,结果是:我们是程序猿

10. 写内容到磁盘文件(writeToFile),再读取内容

    NSString *str = @"胜利是属于我们的!";
    ~~[str writeToFile:@"a.txt",atomically:YES];~~//这种写文件的形式已经被弃用了
    [str writeToFile:@"a.txt" atomically:NO encoding:NSUTF8StringEncoding error:nil];//把str里的类容写到a.txt文件里,保存到磁盘
    NSString *str1;
    NSError *error;
    str1 = [NSString stringWithContentsOfFile:@"a.txt" encoding:NSUTF8StringEncoding error:&error];//类方法只能由类调用,这里用NSString来调用
      NSLog(@"%@%@",error,str1);

11.字符串扩展stringByAppendingString

NSString *str = @"abcd";
str = [str stringByAppendingString:@"efgh"];
NSLog(@"%@",str);

12. NSMutableString动态类

     NSMutableString *str = [NSMutableString stringWithCapacity:100];//预留100个字符的空间
     NSLog(@"%@",str);//此时是空串
    [str appendString:@"123"];//直接添加字符串"123"
    [str appendFormat:@"%d",123];//格式化的添加"123"
    NSRange r = {0,2};
    [str replaceCharactersInRange:r withString:@""];
    NSLog(@"%@",str);
    [str deleteCharactersInRange:r];//删除字符串某个范围的字符
    NSLog(@"%@",str);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值