iOS开发_Objective-C_字符串操作

一、 NSString

1.  - substringToIndex:  从字符串的开头一直截取到指定的位置,但不包括该位置的字符

1 NSString *string1 = @"This is a string";
2 NSString *string2 = [string1 substringToIndex:3];
3 NSLog(@"string2:%@",string2);
substringToIndex

2. - substringFromIndex: 以指定位置开始(包括指定位置的字符),并包括之后的全部字符

1 NSString *string1 = @"This is a string";
2 NSString *string2 = [string1 substringFromIndex:3];
3 NSLog(@"string2:%@",string2);
substringFromIndex

3. - substringWithRange: 按照所给出的位置,长度,任意地从字符串中截取子串

1 NSString *string1 = @"This is a string";
2 NSString *string2 = [string1 substringWithRange:NSMakeRange(0, 4)];
3 NSLog(@"string2:%@",string2);
substringWithRange:NSMakeRange

4. - stringByReplacingOccurrencesOfString: 替换字符串中的子字符串为给定的字符串

1 NSString *str = @“Hello World”;
2 NSString * newStr = [str stringByReplacingOccurrencesOfString: @"l" withString: @"b"];
stringByReplacingOccurrencesOfString

5. - compare: 比较两个字符串的大小, 大于 返回1  相等返回0   小于返回-1

1 NSString *str1 = @"Hello";
2 NSString *str2 = @"World";
3 BOOL result = [str1 compare:str2];
compare

6. -caseInsensitiveCompare: 不区分大小写比较字符串

1 NSString *str1 = @"Hello,World,We,Are,The,Future";
2 NSString *str2 = @"hello";
3 BOOL result = [str1 caseInsensitiveCompare:str2];
caseInsensitiveCompare

7. - componentsSeparatedByString: 根据传入的字符串, 分割原字符串, 返回分割后的字符串数组

 1 NSString *str1 = @"Hello,World,We,Are,The,Future";
 2 NSArray *result = [str1 componentsSeparatedByString:@","];
 3 NSLog(@"result = %@", result);
 4 
 5 /**
 6          打印: result = (
 7                          Hello,
 8                          World,
 9                          We,
10                          Are,
11                          The,
12                          Future
13                         )
14 */
componentsSeparatedByString

8. - pathWithComponents: 通过一个数组创建一个路径字符串

1 NSArray *component = @[@"User", @"DeskTop", @"Objective-C", @"UI"];
2 NSString *path = [NSString pathWithComponents: component];
3 NSLog(@"path = %@", path);
4 // 打印: path = User/DeskTop/Objective-C/UI
pathWithComponents

9. - pathComponents: 将一个路径截取为数组

 1 NSString *path = @"User/DeskTop/Objective-C/UI";
 2 NSArray *components = [path pathComponents];
 3 NSLog(@"components = %@", components);
 4 
 5 /**
 6    打印:
 7 
 8 components = (
 9     User,
10     DeskTop,
11     "Objective-C",
12     UI
13 )
14  
15 */   
pathComponents

10. - stringByDeletingLastPathComponent: 删除路径的最后一个部分

1 NSString *path = @"User/DeskTop/Objective-C/UI";
2 NSString *result = [path stringByDeletingLastPathComponent];
3 NSLog(@"result = %@", result);
4 // 打印: result = User/DeskTop/Objective-C
stringByDeletingLastPathComponent

11. - stringByAppendingPathComponent: 在路径最后拼接一个组成部分

1 NSString *path = @"User/DeskTop/Objective-C/UI";
2 NSString *result = [path stringByAppendingPathComponent:@"1.png"];
3 NSLog(@"result = %@", result);
4 // 打印: result = User/DeskTop/Objective-C/UI/1.png
stringByAppendingPathComponent

二、 NSMutableString

1. - setString: 重新设置字符串

 1 [mstr setString:@"This is string AAA"]; 

2. - replaceCharactersInRange: 替换原字符串某范围内的字符串

1 NSMutableString *str1 = [[NSMutableString alloc] initWithFormat:@"Hello"];
2 [str1 replaceCharactersInRange:NSMakeRange(0, 1) withString:@"S"];
replaceCharactersInRange

三、 一些使用的操作技巧

1. 移除所有非数字字符 NSString 保留空格

1 // 通过创建您想保留,并且使用的字符的字符集来轻松地完成 invertedSet 创建"所有其他"设置。然后将字符串拆分为数组由这一组中的任何字符分隔,并再重新组装该字符串。听起来复杂,但很简单
2 NSCharacterSet *setToRemove = [[ NSCharacterSet characterSetWithCharactersInString:@"0123456789 "] invertedSet ];
3 
4 NSString *newString = [[someString componentsSeparatedByCharactersInSet:setToRemove] componentsJoinedByString:@""];
代码实现

常见的NSString方法

 +(id)stringWithContentsOfFile:path encoding:enc error:err

创建一个新字符串并将其设置为path指定的文件的内容,使用字符编码enc,如果非零,则返回err中的错误。

+(id)stringWithContentsOfURL:url encoding:enc error:err

床架一个新字符串,并将其设置为url的内容,使用字符编码enc,如果非零,则返回err中的错误。

+(id)string   创建一个新的空字符串。

+(id)stringWithString:nsstring 创建一个新字符串,并将其设置为nsstring

-   (id)initWithString:nsstring   将新分配的字符串设置为nsstring

- (id)initWithContentsOfFile:path encoding:enc error:err

将字符串设置为path指定的文件的内容

- (id) initWithContentsOfURL:url encoding;enc error:err

将字符串设置为url(NSURL*)url的内容,使用字符编码enc,如果非零,则返回err中的错误。

- (UNSIgned int)lengtn  返回字符串中字符数目

- (unichar) characterAtIndex:i  返回索引i的Unicode字符

- (NSString*)substringFromIndex:i   返回从i开始直到结尾的字符串

- (NSString*)substringToIndex:i 返回从该字符串开始位置到索引i的子字符串

- (NSComparator *)caseInsensitiveCompare:nsstring 比较两个字符串,忽略大小写

- (NSComparator *)compare:nsstring  比较两个字符串

- (BOOL)hasPrefix:nsstring 测试字符串是否以nsstring开始

- (BOOL)isEqualToString:nsstring  测试两个字符串是否相等。

- (NSString*)capitalizedString 返回每个单词首字母大写的字符串(每个单词的其余字母转换为小写)

- (NSString *)lowercaseString 返回转换为小写的字符串

- (NSString *)uppercaseString 返回抓换为大写的字符串

- (const char *)UTF8String 返回转换为UTF8字符串的字符串

- (double) doubleValue 返回转换为NSInteger整数的字符串

- (int)intValue 返回转换为整数的字符串

NSMutableString字符方法

+(id)stringWithCapacity:size 创建一个字符串,初始包含size的字符

- (id)initWithCapacity:size 使用初始容量为size的字符来初始化字符串

-  (void)setString :nsstring 将字符串设置为nsstring

-  (void) appendString:nsstring 在接受者的末尾附加nsstring

-  (void)deleteCharactersInrange:range 删除指定range中的字符

-  (void)insertString:nsstring atIndex:i以索引i为起始位置插入nsstring

-  (void) replaceCharactersInrange: range withString:nsstring 使用nsstring替换range指定的字符

-  (void)replaceOccurrencesOf  String:nsstring withString:nsstring2 options:opts range:range

根据选项opts,使用指定range中的nsstring2替换所有的nsstring。选项可以包括NSBackwardsSearch(从范围的结尾开始搜索),NSAn冲热点Search(nsstring必须匹配范围的开始),NSLiteralSearch

 
原文地址:https://www.cnblogs.com/limenglong0226/p/4426058.html