Objective-C 字符串

字符串(NSString)

Objective-C 中处理字符串的的类主要是 NSString 和 NSMutableString 两个类,NSString 类一旦创建,就不可以再修改,若需要一个可修改的字符串对象,需创建 NSMutableString 实例。

不可变字符串(NSString)

1.创建字符串常量

NSString *string = @"字符串常量";

2.创建一个空字符串

NSString *string = [[NSString alloc] init];

3.创建一个格式化字符串

NSString *string = [[NSString alloc] initWithFormat:@"%d",20];

4.对比两个字符串是否相同

if ([string1 isEqualToString:string2]) {
    NSLog(@"string1 isequal string2 相同");
}else{
    NSLog(@"string1 isequal string2 不相同");
}

5.比较字符串大小

NSComparisonResult result = [string1 caseInsensitiveCompare:string2];

6.求字符串长度

NSUInteger length = [string1 length];

7.改变字符串大小写

NSLog(@"%@", [string4 uppercaseString]);     //全部大写
NSLog(@"%@", [string4 lowercaseString]);     //全部小写
NSLog(@"%@", [string4 capitalizedString]);   //首字母大写

8.将字符串转换为数组

NSString *string = @"one two three four five";
NSArray *array = [string8 componentsSeparatedByString:@" "];

9.截取字符串

//从开头截取到指定位置,但不包括指定位置
NSString *str1 = [string substringToIndex:1];

//从指定位置开始到结束,包括指定位置
NSString *str2 = [string substringFromIndex:2];

10.根据范围截取字符串

//从第 4 个字符开始截取,长度为 2 个字符
NSString *str = [string substringWithRange:NSMakeRange(4, 2)];

11.连接字符串

NSString *str = [string1 stringByAppendingString:string2];
NSString *str = [string1 stringByAppendingFormat:@"%@", string2];

12.查询字符串对象

NSRange range = [str rangeOfString:@"abc"];
if (range.location != NSNotFound) {
    NSLog(@"找到了");
} else {
    NSLog(@"没找到");
}

可变字符串(NSMutableString)

1.初始化

NSMutableString *str1 = [[NSMutableString alloc] initWithFormat:@"abc"];
NSMutableString *str2 = [NSMutableString stringWithFormat:@"def"];
NSMutableString *str3 = [NSMutableString stringWithString:@"abcdef"];

2.插入字符串

//从字符串第 3 个字符开始插入
[str1 insertString:@"def" atIndex:3];

3.删除字符串

//从字符串第 0 个字符开始删除,删除长度为 3
[str1 deleteCharactersInRange:NSMakeRange(0, 3)];

4.替换字符串

//从字符串第 0 个字符开始替换,替换长度为 3 
[str1 replaceCharactersInRange:NSMakeRange(0, 3) withString:@"abc"];

5.连接字符串

[str1 appendString:str2];

字符串比较

比较方法有:

[value compare:(NSString *)];
[value compare:(NSString *) options:(NSStringCompareOptions)];
[value compare:(NSString *) options:(NSStringCompareOptions) range:(NSRange)];

传入的参数为:compare:(NSString *),例如:

[value compare:@"1234567890"]    //返回 NSOrderedSame

NSStringCompareOptions:

NSCaseInsensitiveSearch            //不区分大小写比较。  
NSLiteralSearch                    //区分大小写比较。  
NSBackwardsSearch                //从字符串末尾开始搜索。  
NSAnchoredSearch                //搜索限制范围的字符串。  
NSNumbericSearch                //按照字符串里的数字为依据,算出顺序。  
NSDiacriticInsensitiveSearch    //忽略 "-" 符号的比较。  
NSWidthInsensitiveSearch        //忽略字符串的长度,比较出结果。  
NSForcedOrderingSearch            //忽略不区分大小写比较的选项,并强制返回 NSOrderedAscending 或者 NSOrderedDescending. 

返回值:

NSOrderedAscending                //升序
NSOrderedSame                    //等于
NSOrderedDescending                //降序

例如:

NSString *string1 = @"123";
NSString *string2 = @"234";

if ([string1 compare: string2 options:NSNumericSearch] == NSOrderedDescending){
    NSLog(@"string1 > string2");
}else{
    NSLog(@"string1 < string2");
}