iOS开发系列之Objective-C基础:NSString字符串类型(一)

       第一次写博客,有点小紧张,因为听说写博客(尤其是CSDN博客)是IT小白走向技术大牛的第一步,所以我就斗胆掏出肚子里那一点东西,出来浪一回!大笑好了,废话不多说了,咱这就进入正题,今天我们主要来看一看Objective-C(以下简称OC)基础中的基础——Foundation框架之NSString字符串类型。

首先,我们得创建一个字符串类型,以下有几种创建方式:

  // 快速创建
NSString* str1 = @"这是一个字符串";

  // alloc方法创建
NSString* str2 = [[NSString alloc]initWithString:@"这还是一个字符串"];

  // 对象方法格式化创建
int a = 3;
NSString* str3 = [[NSString alloc]initWithFormat:@"这是第%d个字符串",a];
 
  // 类方法格式化创建
int b = 4;
NSString* str4 = [NSString stringWithFormat:@"这是第%d个字符串",b];

关于什么是类方法和对象方法,我在这里就不解释了,不懂的请自行百度,他们比我说的好!

        接下来,我们利用字符串的几个常用方法,来尽情玩耍吧!现在,我们来比较一下两个字符串的内容是否相同,

学过C++的人会轻蔑地笑笑,直接比不就完了吗?所以他们会怎么写:

  // 比较字符串内容是否相同,此方法不正确
if(str1 == str2)
{
    NSLog(@"str1 == str2 ");
}
else
{
    NSLog(@"str1 != str2");
}

        如果你是这样写的,那么恭喜你,你错了!为什么呢?虽然这样写能编译通过,但是完全不是你想的那个意思,那是什么意思呢?其实这是在比较两个字符串对象的内存地址是否相同,换句话说,他们的指针是否指向了同一个地址。哦,原来是这样,那怎么比较字符串内容呢?所以这里不得不用到一个方法(函数):isEqualToString.

BOOL isEqual = [str1 isEqualToString:str2];

if(isEqual)
{
    NSLog(@"str1 与 str2 内容相同 ");
}
else
{
     NSLog(@"str1 与 str2 内容不相同 ");
}

再接下来,我们来进行一下字符串内容大小的比较,其实它有几种比较方式,例如:大小写敏感,大小写不敏感,在某个范围内比较等等,通常用的比较多的是忽略大小写的比较方法,而返回的比较结果为NSComparisonResult 类型,它包括三个值,分别为:NSOrderedAscending , NSOrderedSame,NSOrderedDescending;从字面意思上我们得知第一个值是『升序』,第二个值是『相等』,第三个值是『降序』,也就是说它们分别是:<、=、> 。好了,我在下面贴个代码,试一试:

NSString* str5 = @"abc";
NSString* str6 = @"ab";

NSComparisonResult result = [str5 caseInsensitiveCompare:str6];
if(result == NSOrderedAscending)
{
    NSLog(@"str5 < str6");
}
else if(result == NSOrderedSame)
{
    NSLog(@"str5 = str6");
}
else if(result == NSOrderedDescending)
{
    NSLog(@"str5 > str6");
}

如果你的机子没问题的话,结果应该是:str5 > str6

还有一个经常用到的知识点,就是字符串的长度,只需调用它自己的"length"方法即可,但是注意,返回值为NSUInteger,无符号长整形。

NSString* str7 = @"1234567";
NSUInteger len = [str7 length];
		
NSLog(@"Length  = %ld",len);
//NSLog(@"Length = %ld",[str7 length]);
输出结果为:Length = 7 。

       下面说一说字符串大小写转换,废话不多说,贴代码:

// 大小写转换
NSString* str8 = @"helloWORLD";
		
NSLog(@"%@",[str8 uppercaseString]); // 全部大写
NSLog(@"%@",[str8 lowercaseString]); // 全部小写
NSLog(@"%@",[str8 capitalizedString]); // 首字母大写,其它全部小写
输出结果分别为:HELLOWORLD、helloworld、Helloworld;注意:如果把 str8 改成下面这样:

NSString* str8 = @"hello,WORLD";
那第三个输出语句就会变成:Hello,World 。首字母是相对于一个单词(准确的说是被特殊符号分割的字母段)来说的,而不是指整个字符串。

再说一个非常重要并且常用的知识点,虽然很简单。我们经常不得不将基本数据类型的数据以字符串形式存储(虽然我们并不想这样做),等到要使用这些数据的时候,我们又将这些字符串还原成原来类型的数据,这就用到了下面的方法:

//3.转换为基本数据类型
// 1) 基本数据类型以字符串形式存储
NSString* intStr = [NSString stringWithFormat:@"%d",10];
NSString* floatStr = [NSString stringWithFormat:@"%f",10.0];
NSString* boolStr = @"YES";
		
// 2) 将字符串还原成基本数据类型
int a = [intStr intValue];
float b = [floatStr floatValue];
bool c = [boolStr boolValue];
		
NSLog(@"a=%d, b=%.1f, c=%d",a,b,c);
输出结果为:a=10, b=10.0, c=1

说这么多了,你是不是有点累?好吧,我们消息一下,消化消化上面的东西……(未完待续)
 





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值