Objective-C之字符串对象-创新互联
Foundation框架支持一个名为NSString的类,用于处理字符串对象。
注意 : 要使用OC语言创建一个字符串对象,需要在字符串开头放置一个@字符:
@"Programming is fun"
一 : NSLog
%@用来显示NSString。
#import
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *str = @"Programming is fun";
NSLog(@"%@",str);
}
return 0;
}
结果:
当然值得注意的是 , %@可以显示其他的对象:
#import
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *str = @"Programming is fun";
NSLog(@"%@",str);
NSNumber *initNum = [NSNumber numberWithInteger:100];
NSLog(@"%@",initNum);
}
return 0;
}
结果:
二 : 基本字符串操作①
#import
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *str1 = @"This is string A --";
NSString *str2 = @"This is string B";
NSString *res;
NSComparisonResult compareResult;
//计算字符串中的字符
NSLog(@"Length of str1 : %lu" , [str1 length]);
//将一个字符串复制到另一个字符串(全部覆盖(擦掉覆盖))
res = [NSString stringWithString:str1];
NSLog(@"copy : %@", res);
res = [NSString stringWithString:str2];
NSLog(@"copy : %@", res);
//将一个字符串复制到另一个字符串的末尾(在str1后面加str2)
str2 = [str1 stringByAppendingString:str2];
NSLog(@"Concatentation : %@" , str2);
//验证2个字符串是否相等
if( [str1 isEqualToString: res] == YES){
NSLog(@" str1 == res ");
}else{
res = [NSString stringWithString:str1];
if([str1 isEqualToString:res] == YES){
NSLog(@"str1 == res 2");
}
}
//验证一个字符串死否小于,等于或大于另一个字符串
compareResult = [str1 compare:str2];
if( compareResult == NSOrderedAscending ){
NSLog(@"str1 < str2");
}else if( compareResult == NSOrderedSame ){
NSLog(@"str1 == str2");
}else{
//NSOrderedDescending
NSLog(@"str1 > str2");
}
//将字符串转为大写(注意 : str1的大小写不变)
res = [str1 uppercaseString];
NSLog(@"str1 : %@ , res : %@" , str1 , res);
//将字符串转换成小写
res = [str1 lowercaseString];
NSLog(@"str1 : %@ , res : %@" , str1 , res);
}
return 0;
}
结果:
二 : 基本字符串操作②
#import
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *str1 = @"This is string A --";
NSString *str2 = @"This is string B";
NSString *res;
NSRange subRange;
//从字符串中提取前3个字符
res = [str1 substringToIndex:3];
NSLog(@"First 3 chars of str1 : %@" , res);
//提取从索引5开始直到结尾的子字符串
res = [str1 substringFromIndex:5];
NSLog(@"Chars from index 5 of str1 : %@", res);
//提取从索引5开始到索引13的子字符串(6个字符)
res = [[str1 substringFromIndex:8] substringToIndex:6];
NSLog(@"Chars from index 8 through 13 : %@" , res);
//更简单的方法 提取从索引5开始到索引13的子字符串(6个字符)
res = [str1 substringWithRange:NSMakeRange(8,6)];
NSLog(@"!! Chars from index 8 through 13 : %@" , res);
//查找字符串
subRange = [str1 rangeOfString:@"string"];
NSLog(@"String is at index %lu ,length is %lu" , subRange.location , subRange.length);
subRange = [str1 rangeOfString:@"string B"];
//没有找到
if( subRange.location == NSNotFound ){
NSLog(@"String not found");
}
}
return 0;
}
结果:
三 :可变字符串
NSMutableString 类可以用来创建可以更改字符的字符串对象,它继承自NSString
#import
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *str1 = @"This is string A";
NSString *search , *replace;
NSMutableString *mstr;
NSRange substr;
//从不可变字符串创建可变字符串
mstr = [NSMutableString stringWithString: str1];
NSLog(@"%@",mstr);
//插入字符
[mstr insertString:@" Aonaufly" atIndex:7];
NSLog(@"%@",mstr);
//插入末尾进行有效拼接
[mstr insertString:@" and string B" atIndex:[mstr length]];
NSLog(@"%@",mstr);
//same
[mstr appendString:@" and string C"];
NSLog(@"%@",mstr);
//根据范围删除子字符串
[mstr deleteCharactersInRange: NSMakeRange(16,13)];
NSLog(@"%@",mstr);
//查找然后将其删除
substr = [mstr rangeOfString:@"string B and "];
if( substr.location != NSNotFound ){
[mstr deleteCharactersInRange:substr];
NSLog(@"%@",mstr);
}
//直接设置为可变的字符串
[mstr setString:@"This is string A"];
NSLog(@"%@",mstr);
//替换一些字符串
[mstr replaceCharactersInRange:NSMakeRange(8,8) withString:@"a mutable string"];
NSLog(@"%@",mstr);
//查找和替换
search = @"This is";
replace = @"An example of";
substr = [mstr rangeOfString:search];
if(substr.location != NSNotFound){
[mstr replaceCharactersInRange: substr withString:replace];
NSLog(@"%@",mstr);
}
//查找和替换所有的匹配项
search = @"a";
replace = @"X";
substr = [mstr rangeOfString:search];
while (substr.location != NSNotFound) {
[mstr replaceCharactersInRange:substr withString:replace];
substr = [mstr rangeOfString:search];
}
NSLog(@"%@",mstr);
}
return 0;
}
结果:
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
文章名称:Objective-C之字符串对象-创新互联
链接URL:http://hbruida.cn/article/dsceih.html