OC字符串对象:1-NSString类
在Foundation框架中,处理字符串的类就是NSString和NSMutableString。这两个类完成了Objective-C中与字符串相关的核心功能处理。而NSString和NSMutableString两个类最主要的区别是NSString类的字符串对象,在创建赋值后不能动态修改长度和内容,除非重新赋值。而NSMutableString类似于链表,在创建赋值后可以进行修改长度、插入、删除等操作。
基本介绍
在使用任何语言进行程序开发,字符串的处理都是一个最常用,也是最基本的操作。在Foundation框架中,提供了一个名为NSString的类,用于处理字符串对象。另外NSString类有一个子类--NSMutableString类,用于处理可变长度的字符串。
在NSString类以及其子类NSMutableString中,定义了诸多与字符串相关的属性以及方法,这些属性和方法会用于字符串的创建、对比、搜索以及修改。
创建字符串对象
在NSString中,提供了多个用于字符串创建的方法。但是在实际的开发过程中,通常可以使用如下几种方式来创建一个字符串对象。
- 创建字符串的简便方法,使用@"",把字符串写在引号内
NSString *webSite = @"www.99ios.com";
- 使用stringWithFormat:方法
+ (instancetype)stringWithFormat:(NSString *)format, ... ;
例如:
NSString *string1 = [NSString stringWithFormat:@"www.99ios.com"];
- 使用stringWithUTF8String:方法,需要注意的是,调用该方法时,传入的参数是一个字符串,而不是字符串对象(不需要添加@)
+ (nullable instancetype)stringWithUTF8String:(const char *)nullTerminatedCString;
例如:
NSString *string2 = [NSString stringWithUTF8String:"九九学院"];
- 使用initWithFormat:方法
- (instancetype)initWithFormat:(NSString *)format, ... ;
例如:
NSString *string3 = [[NSString alloc] initWithFormat:@"www.99ios.com"];
- 使用initWithUTF8String:方法
- (nullable instancetype)initWithUTF8String:(const char *)nullTerminatedCString;
例如:
NSString *string4 = [[NSString alloc] initWithUTF8String:"九九学院"];
字符串比较
在实际开发中,经常会涉及到字符串之间进行比较操作,例如:判断两个字符串是否相同,是否有包含关系等。在NSString类中也提供了用于字符串比较的方法。
- 判断字符串是否相同,使用isEqualToString方法
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *string1 = @"www.99ios.com";
NSString *string2 = @"www.99ios.com";
//字符串比较
if ([string1 isEqualToString:string2]) {
NSLog(@"string1 与 string2 相等");
}
}
return 0;
}
运行结果:
- 判断字符串中是否包含某个字符串,使用containsString方法
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *string = @"www.99ios.com";
//字符串是否包含
if ([string containsString:@"99ios"]) {
NSLog(@"string中包含字符串99ios!");
}
}
return 0;
}
运行结果:
- 使用hasPrefix:与hasSuffix:方法,判断字符串的开头与结尾
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *string = @"www.99ios.com";
//判断字符串是否以某个字符串开头/结尾
if ([string hasSuffix:@"com"]) {
NSLog(@"string1以com结尾");
}
if ([string hasPrefix:@"www"]) {
NSLog(@"string1以www开头");
}
}
return 0;
}
运行结果:
字符串的拼接与截取
在开发中,我们时常会涉及到对选定字符串进行截取操作,常见的截取有如下三种方式。
使用substringFromIndex:方法, 获得从指定索引位置开始的字符串,传入的参数表示开始截取的位置,最终截取得到的字符串中不包括参数表示位置的字符
使用substringToIndex方法,获得从字符串开始到指定索引之间的字符串,最终截取得到的字符串中不包括参数表示位置的字符;
从中间截取一段字符串,使用substringWithRange:方法,需要传入一个NSRange类的参数,用于指明截取的范围。
在下方的示例代码中,介绍了以上3种需要掌握的截取字符串的方法。
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *string = @"www.99ios.com";
//字符串截取
NSString *subString1 = [string substringFromIndex:4]; //结果:99ios.com
NSString *subString2 = [string substringToIndex:3]; //结果:www
NSRange range = NSMakeRange(4, 5); //从第4位开始截取,截取5位
NSString *subString3 = [string substringWithRange:range]; //结果:99ios
NSLog(@"subString1:%@",subString1);
NSLog(@"subString2:%@",subString2);
NSLog(@"subString3:%@",subString3);
}
return 0;
}
运行结果:
关于字符串的其他操作
对于NSString类,除了创建字符串对象、对字符串比较以及截取字符串之外,还有如下几个针对字符串的属性和方法相对常用,建议初学者掌握。
- 使用length属性,获取字符串的长度
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *string = @"www.99ios.com";
NSLog(@"字符串的长度:%ld",string.length);
}
return 0;
}
运行结果:
- 使用integerValue方法实现数字字符串与数字的转换
int main(int argc, const char * argv[]) {
@autoreleasepool {
//数字字符串转数字,int与NSString转换
NSString *numberString = @"99";
NSInteger number = [numberString integerValue];
NSLog(@"number:%ld",(long)number);
}
return 0;
}
运行结果:
示例代码
https://github.com/99ios/4.2.1
最后编辑时间为: August 27th , 2017 at 09:47 am
本文由 99ios 创作,转载请注明出处