您的位置:首页 > 移动开发 > Objective-C

Objective-C之字符串对象

2018-01-01 17:57 337 查看
Foundation框架支持一个名为NSString的类,用于处理字符串对象。
注意 : 要使用OC语言创建一个字符串对象,需要在字符串开头放置一个@字符:

@"Programming is fun"

一 : NSLog
%@用来显示NSString。

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *str = @"Programming is fun";
NSLog(@"%@",str);
}
return 0;
}

结果:



当然值得注意的是 , %@可以显示其他的对象:

#import <Foundation/Foundation.h>

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 <Foundation/Foundation.h>

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 <Foundation/Foundation.h>

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 <Foundation/Foundation.h>

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;
}

结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Objective 字符 串对象