1.初始化方法
- (instancetype)init; // 基本的初始化方法,返回值类型表示 当前类;
- (instancetype)initWithString:(NSString *)aString; // 用字符串给字符串初始化,(NSString *)aString 用来指定字符串;
- (instancetype)initWithFormat:(NSString *)format, ... ; // 用NSLog()格式进行字符串初始化,可用于字符串的拼接(NSString *)format, ... 用来指定占位符
每个系统初始化方法都有对应的便利构造器方法,便利构造器有进行内存优化,在MRC模式下不用对便利构造器初始化的对象进行release或autorelease操作,便利构造器都是类方法(即 加号方法);
+ (instancetype)string;
+ (instancetype)stringWithString:(NSString *)aString;
+ (instancetype)stringWithFormat:(NSString *)format,, ...;
- (NSUInteger)length; // 返回值类型为无符号长整形(64位系统), 用%lu打印;
4.判断
1).判断字符串是否以指定字符串开始(即 前缀)
- (BOOL)hasPrefix:(NSString *)aString; //返回值类型为BOOL型,常作判断条件使用;
2).判断字符串是否以指定字符串结束
- (BOOL)hasSuffix:(NSString *)aString; // 同上
1).比较字符串是否相等
- (BOOL)isEqualToString:(NSString *)aString; // 如题, 返回值类型为BOOL型;
2).比较字符串大小
- (NSComparisonResult)compare:(NSString *)aString; // 如题,返回值类型是枚举,如下,小于返回-1,等于返回0,大于返回1;
enum { NSOrderedAscending = -1, NSOrderedSame, NSOrderedDescending }; typedef NSInteger NSComparisonResult;
- (NSComparisonResult)caseInsensitiveCompare:(NSString *)aString; // 如题,返回值类型同上;
6. 搜索字符串位置范围
- (NSRange)rangeOfString:(NSString *)aString; // 搜索参数字符串在 调用这个方法的字符串 里的位置,返回值类型为结构体,分别是位置和长度,如下; 调用时要创建一个NSRange类型的对象进行接收,NSRange不是指针变量,创建时不要加"*", 如果搜索不到会返回NSNotFound ,是一个很大的数;
typedef struct _NSRange { NSUInteger location; NSUInteger length; } NSRange;
7.字符串的截取(获取字符串)
- (NSString *)substringToIndex:(NSUInteger)anIndex; // 从字符串开头一直截取到指定位置,返回类型为(NSString *),(因为是不可变字符串)需要创建个对象进行接收;
- (NSString *)substringWithRange:(NSRange)aRange; // 根据指定范围返回子字符串,返回类型同上;
- (NSString *)substringFromIndex:(NSUInteger)anIndex; // 从指定位置开始截取字符串直到结束, 返回类型同上;
8. 字符串的拼接
- (NSString *)stringByAppendingString:(NSString *)aString; // 将参数字符串拼接到调用这个方法字符串的后面,并返回一个新字符串,返回值类型同上;
- (NSString *)stringByAppendingFormat:(NSString *)format, ...; // 将参数字符串以NSLog()格式拼接到调用这个方法的字符串后面,并返回一个新字符串,返回值类型同上;
还可以重新用initWithFormat或stringWithFormat初始化创建一个字符串.
9.字符串替换
- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement; // 用后面的参数字符串替换前面的参数字符串,返回一个新字符串.举个栗子
NSString *str = @"我宣你";
NSString *str2 = [str stringByReplacingOccurrencesOfString:@"宣" withString:@"恨"];
NSLog(@"%@", str2); // 会打印出"我恨你";
- (NSString *)stringByReplacingCharactersInRange:(NSRange)range withString:(NSString *)replacement;将后面的字符串替换掉调用方法字符串的某个位置范围,并返回一个新的字符串;再举个栗子;
NSString *str = @"我宣你";
NSString *str2 = [str stringByReplacingCharactersInRange:NSMakeRange(1, 1) withString:@"狠"];
NSLog(@"%@", str2); // 又是一个悲伤的故事
10. 字符串和数值类型转换
太简单了不想打 - (要转换成的类型)要转换的类型Value; // 就行,这是把字符串转换成其他类型(有double,float,int,integer,longlong,bool);
将其他类型转换成字符串.用stringWithFormat初始化创建一个即可;
11.大小写转换
- (NSString *)lowercaseString; //全部转换成小写, 并返回一个新字符串
- (NSString *)uppercaseString;// 全部转换成大写,并返回一个新字符串;
以上返回值类型是NSString *的为不可变字符串;
不可变字符串的修改操作本质是获得一个新字符串;
修改方法都已string开头;
可变字符串NSMutableString *继承与NSString,也可以调用以上方法但原字符串不发生改变;
12. 初始化同1.;便利构造器同2. ;
13.拼接字符串
- (void)appendString:(NSString *)aString; // 在原字符串后面拼接参数字符串;
- (void)appendFormat:(NSString *)format ...; // 原字符串后面用NSLog()格式拼接参数字符串;
- (void)insertString:(NSString *)aString atIndex:(NSUInteger)anIndex; // 在指定位置插入参数字符串;
- (void)deleteCharactersInRange:(NSRange)aRange; // 删除指定位置范围的字符串;
以后的学习,还会涉及更多的字符串处理方法;
以上是基本基础的字符串处理方法;
16. 截取字符串,并将截取的字符串存放在数组里
- (NSArray *)componentsSeparatedByString:(NSString *)separator; //从参数字符串处(参数字符串除外)截取,把截取后的子字符串存到一个数组里;返回值类型:数组;有多少个参数字符串就截成多少 + 1个元素(参数字符串在开头结尾的除外);
17. 获取文件里的字符串
- (instancetype)initWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error; //第一个参数是文件路径,第二个参数是枚举,表示是字符编码,最后的参数是错误信息(没用过不知道咋用,一般我是填一个nil),返回一个当前类型;
enum {
NSASCIIStringEncoding = 1, /* 0..127 only */
NSNEXTSTEPStringEncoding = 2,
NSJapaneseEUCStringEncoding = 3,
NSUTF8StringEncoding = 4,
NSISOLatin1StringEncoding = 5,
NSSymbolStringEncoding = 6,
NSNonLossyASCIIStringEncoding = 7,
NSShiftJISStringEncoding = 8, /* kCFStringEncodingDOSJapanese */
NSISOLatin2StringEncoding = 9,
NSUnicodeStringEncoding = 10,
NSWindowsCP1251StringEncoding = 11, /* Cyrillic; same as AdobeStandardCyrillic */
NSWindowsCP1252StringEncoding = 12, /* WinLatin1 */
NSWindowsCP1253StringEncoding = 13, /* Greek */
NSWindowsCP1254StringEncoding = 14, /* Turkish */
NSWindowsCP1250StringEncoding = 15, /* WinLatin2 */
NSISO2022JPStringEncoding = 21, /* ISO 2022 Japanese encoding for e-mail */
NSMacOSRomanStringEncoding = 30,
NSUTF16StringEncoding = NSUnicodeStringEncoding, /* An alias for NSUnicodeStringEncoding */
NSUTF16BigEndianStringEncoding = 0x90000100, /* NSUTF16StringEncoding encoding with explicit endianness specified */
NSUTF16LittleEndianStringEncoding = 0x94000100, /* NSUTF16StringEncoding encoding with explicit endianness specified */
NSUTF32StringEncoding = 0x8c000100,
NSUTF32BigEndianStringEncoding = 0x98000100, /* NSUTF32StringEncoding encoding with explicit endianness specified */
NSUTF32LittleEndianStringEncoding = 0x9c000100 /* NSUTF32StringEncoding encoding with explicit endianness specified */
};
typedef NSUInteger NSStringEncoding;