OC学习之道-NSString字符串初探

编程 AnthonyZhai 8个月前 (04-05) 192次浏览 已收录 0个评论 扫描二维码

在学习OC时,很多时候在一开始就用到字符串,只是此时并不知道。例如NSLog函数中@“”用于声明字符串常量。接下来,让我们看看NSStringOC中具体使用方法。

创建

<a href="http://code4u.cn/archives/tag/nsstring" title="查看更多关于NSString的文章" target="_blank">NSString</a>* nameStr=[<a href="http://code4u.cn/archives/tag/nsstring" title="查看更多关于NSString的文章" target="_blank">NSString</a> stringWithFormat:@"I am Anthony,%d years old.",23];
//等同于<a href="http://code4u.cn/archives/tag/nsstring" title="查看更多关于NSString的文章" target="_blank">NSString</a>* nameStr=@“I am Anthony,23 years old”;

这两种方法都可以创建字符串,区别是前者使用格式化字符串初始化字符串对象,后者是创建字符串常量。
此外,还有以下几种创建字符串的方法。

//创建空串
<a href="http://code4u.cn/archives/tag/nsstring" title="查看更多关于NSString的文章" target="_blank">NSString</a>* nameStr=[[<a href="http://code4u.cn/archives/tag/nsstring" title="查看更多关于NSString的文章" target="_blank">NSString</a> alloc]init];
//或
NSString* nameStr=[NSString string];

//使用已有字符串对象初始化字符串
NSString* nameStr1=[NSString stringWithString:nameStr];

字符串比较

在使用字符串时,最使用的情况就是字符串之间的比较。可以通过两种方法来比较字符串。

//字符串比较
NSString* str1=@"HangZhou";
NSString* str2=@"Hangzhou";
//比较方法一
if([str1 isEqualToString:str2])
    NSLog(@"Equal");
//比较方法二
if([str1 compare:str2]==NSOrderedSame)
    NSLog(@"NSOrderedSame");
//不区分大小写的比较
if([str1 compare:str2 options:NSCaseInsensitiveSearch]==NSOrderedSame)
    NSLog(@"NSOrderedSame With CaseInsenstive");
/*等同于
 if([str1 caseInsensitiveCompare:str2]==NSOrderedSame)
    NSLog(@"NSOrderedSame With CaseInsenstive");
*/

上述代码给出两种用于字符串比较方法,isEqualToString:函数返回BOOL型,而compare:函数返回NSComparisonResult(enum枚举型),其中

enum{
    NSOrderedAscending = -1,   //左值小于右值
    NSOrderedSame,
    NSOrderedDescending        //右值小于左值
};

compare:函数可以用在对字符串进行排序方面。
此外,也可以看到在使用compare:函数比较字符串时,可以附加一些选项,如忽略大小写等。

注意区分==和isEqualToString:
由于str1和str2值为字符串对象的指针,所以使用==运算符表示比较两者是否指向同一字符串对象,而isEqualToString:则判断字符串的内容是否相同。

子串操作

截取子串

//截取子串
NSLog(@"%@",[str1 substringFromIndex:4]);
NSLog(@"%@",[str2 substringToIndex:4]);
NSLog(@"%@",[str1 substringWithRange:NSMakeRange(1, 3)]);

分别代表截取4到尾,截取头到4,截取指定范围作为子串使用。

查找子串

//查找子串
if([str1 hasPrefix:@"H"])
    NSLog(@"%@ begin with H",str1);
if([str2 hasSuffix:@"ou"])
    NSLog(@"%@ end with ou",str2);
//查找子串位置
NSRange pos1=[str1 rangeOfString:@"ang"];
NSLog(@"%@",NSStringFromRange(pos1));
//逆序查找子串位置
NSRange pos2=[str2 rangeOfString:@"ou" options:NSBackwardsSearch];
NSLog(@"%@",NSStringFromRange(pos2));
//指定范围查找
NSRange range={1,7};
//等同于NSRange range=NSMakeRange(1, 7);
NSRange pos3=[str1 rangeOfString:@"H" options:NSBackwardsSearch range:range];
if(pos3.location!=NSNotFound)
    NSLog(@"%@",NSStringFromRange(pos3));
else
    NSLog(@"Can't find 'H' from positon 1 to 7 of %@",str1);

1、通过调用字符串的 hasPrefix/hasSuffix 方法来检查字符串是否拥有特定前缀/后缀。
2、通过调用字符串的rangeOfString查找是否存在指定子串并返回其位置和长度的Range对象。附加选项options可以指定逆序搜索和搜索范围。

字符串变换

    //字符串转数字
    NSString* num=@"1234";
    NSLog(@"%d",[num intValue]);
    NSLog(@"%f",[num floatValue]);
    //数字转字符串
    NSLog(@"%@",[NSString stringWithFormat:@"%d",1111]);
    NSLog(@"%@",[NSString stringWithFormat:@"%f",22.222]); 
    //大小写
    NSLog(@"%@",[str1 uppercaseString]);
    NSLog(@"%@",[str2 lowercaseString]);
OCthings/tree/master/AboutString" target="_blank" rel="nofollow">GitHub地址

Objective-C学习之道系列文章列表如下:


“最初的梦想”版权所有丨如未注明 , 均为原创丨若有侵权,请邮件联系留言给我
转载请注明原文链接: OC学习之道-NSString字符串初探
喜欢 (0)
[使用支付宝或微信扫码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址