温故而知新,now复习一下Foundation中的字符串对象

ios开发的时候,Foundation中的字符串对象是再常用不过的了,与此同时,NSDictionary对象也是很常用的,here,先复习String Objects

String Objects有两个版本,一个是不可变的NSString,另一个是NSMutableString

对于NSSting,来几个操作:

// 声明几个string对象
NSString *str1=@"i'll be back";
NSString *str2=@"just do it";
NSString *result;
//计算字符串包含的charcter, -(NSUInteger)length;
NSSLog(@"the characters included in string str1 are:%lu, [str1 length]);
<pre name="code" class="objc">// 构建String Object,注意,这种构建是一个深拷贝
result = [NSString stringWithString:str1];
// 如果要进行浅拷贝则这么写
result = str1;
 

 

字符串的比较中使用的是Foundation定义的NSComparisionResult,以及-(NSComparisionResult)compare:(NSString*)string方法,延续上面的工作,

</pre><pre name="code" class="objc">NSComparisonResult compareResult = [str1 compare: str2];
if (compareResult == NSOrderedAscending) {
	NSLog(@"str1 < str2");
} else if (compareResult == NSOrderedSame) {
	NSLog(@"str1 == str2");
} else if (
compareResult == NSOrderedDescending) {
	NSLog(@"str1 > str2");
}

of course, 如果仅仅是比较两个String是不是相等,也可以用Foundation提供的-(bool)isEqualToString:(NSString*)string方法

if (YES == [str1 isEqualToString:str2]) {
   NSLog(@"str1=str2");
} else {
   NSLog(@"str1 != str2");
}

再来一个字符串追加, 也就是所谓的字符串对象的join操作:

//将str2加到str1之后
NSString *str3 = [str1 stringByAppendingString:str2];

字符串对象中的字符大小写转化

// 全部字符转化成大写
str1 = [str1 uppercaseString];
// 全部字符转化成小写
str2 = [str2 lowercaseString];


关于子串的操作。Foundation对于NSString中提供了对于子串的操作,如-(NSString*)substringToIndex:(NSUInteger)k; 这个方法获得从第0个字符到第k-1个字符的子串。也就是前k个字符构成的子串。和这个方法类似的有-(NSString*)substringFromIndex:(NSUInteger)jjj;则是获得从第jjj个字符到最后一个字符之间的子串。

sub1 = [str1 substringToIndex:2];
sub2 = [str2 substringFromIndex:5];
sub3 = [str1 substringFromIndex:8] substringToIndex:6]];

对于str1 substringFromIndex:8] substringToIndex:6]实际上拿到的是str1第8个字符开始之后的6个字符组成的子串。对于这个需求也可以这么实现,封装性更好一点,它借助的是NSRange这个结构体:

NSRange range = NSMakeRange(8,6);
sub33 = [str1 substringWithRange:range];
以上是获取一个子串的操作。除了获取子串,我们对于字符串的需求还包括查找一个字符串中是否存在某个子串的操作。例如,在“hello,new stage“中,我们想看看有没有new这个字符串,可以这么来实现:

NSString *pattern = @”new";
NSString *source = @"hello, new stage";
NSSRange ra = [source rangeOfString:pattern];
if (ra == NSNotFound) {
  NSSLog(@"pattern is not a substring of source");
} else {
  NSSLog(@"pattern in source is index:%lu", ra.location);
}
NSRange是Foundation中提供的结构体,这个在c++中也是有类似的结构用来封装一个范围。NSNotFound类是-1或者什么标识,标识没有在目标串中找到模式串。如果又找到,通过NSRange的location成员就能获得模式串在目标串source中的开始下标。



  
  
  



 



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值