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

object-c 之字符串的操作

2014-04-25 16:02 567 查看
这个礼拜,公司的任务轻,不到2天就基本上搞定了。

今天想给自己总结下oc中的字符串的操作。

在oc中,可以用来定义字符串的类是NSString,它直接继承NSObject,它还派生出来一个子类,就是NSMutableString。这二者的区别就是:NSString一旦定义好了,就不能在定义好的字符串中增删操作,NSMutableString是可变的。

@interface NSString : NSObject <NSCopying, NSMutableCopying, NSSecureCoding>
NSString遵循了复制的协议和安全编码的协议,所以它的子类也同样遵循它所遵循的规范。(关于协议和代理回头再给自己补上一课)


在oc中,用2个不同后缀的文件来区分开来一个类的声明和实现,即.h文件来声明一个类,放在.h文件里面的属性和方法,外部是能够访问到的;用.m文件来作为该类的实现,外面是访问不到的。在h文件中用 @interface 类名 :父类 <协议或代理方法> 来声明一个类,在m文件中用@implementation类名
来实现一个类。在m文件中有

@interface AbObjectcIntruduction ()
@end


可以在@end前面添加一些额外的全局熟悉。如:

@interface AbObjectcIntruduction ()
{
NSString       *string;
NSMutableArray *array;
}
@end
这2个属性默认就是@private的,也不需要@property 来标识。对private的熟悉可以直接调用变量名,对property的熟悉需要使用_变量名或者self.变量名来调用。

在ios5以后,语言环境会自己给我们生成get/set方法,也不需要调用@synthesize 属性名 来给熟悉生成访问方法。自己写了get/set方法的话,系统优先调用自己写的访问方法。

回顾了一些啰嗦的小点,开始看看NSString的一些操作。

NSString实例的生成有很多中方法,可以直接生成NSString *nameString = @"can"; 或者调用它自身的一些方法来生成 NSString *nameString = [NSString string];
oc 中记录位置的index是从0开始的,NSString有获取子字符串的方法:
- (NSString *)substringFromIndex:(NSUInteger)from;
- (NSString *)substringToIndex:(NSUInteger)to;
- (NSString *)substringWithRange:(NSRange)range;
第三个方法是可以返回指定范围的子字符串。

它还有几个判断的方法:
- (BOOL)isEqualToString:(NSString *)aString;//判断是否与aString相同
- (BOOL)hasPrefix:(NSString *)aString;//判断是否以aString开始
- (BOOL)hasSuffix:(NSString *)aString;//判断是否以aString作为后缀


- (BOOL)isEqual:(id)object; 这个方法是从NSObject类继承过来的,是用来判断是否与object在内存中的位置是否相同。
字符串的分割还是比较常用的,其方法就是 - (NSArray *)componentsSeparatedByString:(NSString *)separator; 按照传入的string来分割,返回一个数组。
NSMutableString的一些常用的方法有:

它的初始化方法有:
- (id)initWithCapacity:(NSUInteger)capacity;
+ (id)stringWithCapacity:(NSUInteger)capacity;

区别在于:第一个调用内存分配之后再初始化,第二个直接生成一个实例,自动分配内存。
常用的方法有:
- (void)insertString:(NSString *)aString atIndex:(NSUInteger)loc;
- (void)appendString:(NSString *)aString;
这2个都是目前项目中常用到的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  nsstring object