NSString 常用处理方法

韩晋
2023-12-01

1.初始化方法

- (instancetype)init; // 基本的初始化方法,返回值类型表示 当前类;

- (instancetype)initWithString:(NSString *)aString; // 用字符串给字符串初始化,(NSString *)aString 用来指定字符串;

- (instancetype)initWithFormat:(NSString *)format, ... ; // 用NSLog()格式进行字符串初始化,可用于字符串的拼接(NSString *)format, ... 用来指定占位符

2. 便利构造器

每个系统初始化方法都有对应的便利构造器方法,便利构造器有进行内存优化,在MRC模式下不用对便利构造器初始化的对象进行release或autorelease操作,便利构造器都是类方法(即 加号方法);

+ (instancetype)string;

+ (instancetype)stringWithString:(NSString *)aString;

+ (instancetype)stringWithFormat:(NSString *)format,, ...;

3. 求字符串长度方法
- (NSUInteger)length; // 返回值类型为无符号长整形(64位系统), 用%lu打印;

4.判断

1).判断字符串是否以指定字符串开始(即 前缀)

- (BOOL)hasPrefix:(NSString *)aString; //返回值类型为BOOL型,常作判断条件使用;

2).判断字符串是否以指定字符串结束

- (BOOL)hasSuffix:(NSString *)aString; // 同上

5.比较

1).比较字符串是否相等

- (BOOL)isEqualToString:(NSString *)aString; // 如题, 返回值类型为BOOL型;
2).比较字符串大小

- (NSComparisonResult)compare:(NSString *)aString; // 如题,返回值类型是枚举,如下,小于返回-1,等于返回0,大于返回1;


enum {    NSOrderedAscending = -1,    NSOrderedSame,    NSOrderedDescending }; typedef NSInteger NSComparisonResult; 


3).不考虑大小写比较大小
- (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()格式拼接参数字符串;

14.插入字符串

- (void)insertString:(NSString *)aString atIndex:(NSUInteger)anIndex; // 在指定位置插入参数字符串;

15.删除字符串

- (void)deleteCharactersInRange:(NSRange)aRange; // 删除指定位置范围的字符串;



以后的学习,还会涉及更多的字符串处理方法;

以上是基本基础的字符串处理方法;


16. 截取字符串,并将截取的字符串存放在数组里

- (NSArray *)componentsSeparatedByString:(NSString *)separator; //从参数字符串处(参数字符串除外)截取,把截取后的子字符串存到一个数组里;返回值类型:数组;有多少个参数字符串就截成多少 + 1个元素(参数字符串在开头结尾的除外);


17. 获取文件里的字符串

- (instancetype)initWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error; //第一个参数是文件路径,第二个参数是枚举,表示是字符编码,最后的参数是错误信息(没用过不知道咋用,一般我是填一个nil),返回一个当前类型;

作用:获取.txt文件里的字符串, 以及等等``````以下是枚举,常用第四个:UTF-8

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;







 类似资料: