程序员经常操作的事情估计就是字符串的各种处理了,这篇说一下OC中常用的字符串操作:
1.NSString的大小处理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
NSString *string = @"ankang";
NSLog(@"全部变成大写%@", [string uppercaseString]);
/// 打印结果
2016-06-17 16:02:04.925 test[44498:11175521] 全部变成大写ANKANG
NSString *string = @"ANKANG";
NSLog(@"全部变成小写%@", [string lowercaseString]);
/// 打印结果
2016-06-17 16:03:15.404 test[44536:11183707] 全部变成小写ankang
NSString *string = @"anKang";
NSLog(@"首字母变大写其他小写,%@", [string capitalizedString]);
/// 打印结果
2016-06-17 16:05:29.253 test[44618:11206406] 首字母变大写其他小写Ankang
|
2.NSString的比较
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
NSString *string = @"anKang";
/// 两个字符串相同返回YES,否则返回NO
BOOL isEqual = [string isEqualToString:@"anKang"];
NSLog(@"%@", isEqual ? @"相同" : @"不相同");
/// 打印结果
2016-06-17 16:12:19.362 test[44705:11240391] 相同
NSString *string1 = @"ankang";
NSString *strign2 = @"LIMING";
/// 比较两个字符串内容的大小:逐个字符进行ASCII值
NSComparisonResult result = [string1 compare:strign2];
// 小技巧:写switch语句选择枚举的时候,最好不写default,这样编辑器会提醒你缺少的枚举条件
switch (result) {
case NSOrderedAscending:
NSLog(@"左边小");
break;
case NSOrderedSame:
NSLog(@"相等");
break;
case NSOrderedDescending:
NSLog(@"左边大");
break;
}
/// 忽略大小写的比较
NSComparisonResult resultNew = [string1 caseInsensitiveCompare:strign2];
switch (resultNew) {
case NSOrderedAscending:
NSLog(@"左边小");
break;
case NSOrderedSame:
NSLog(@"相等");
break;
case NSOrderedDescending:
NSLog(@"左边大");
break;
}
/// 打印结果
2016-06-17 17:46:23.602 test[45178:11436673] 左边大
2016-06-17 17:46:23.603 test[45178:11436673] 左边小
|
3.NSString 的搜索
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
NSString *string = @"我是中国人";
BOOL isHasPre = [string hasPrefix:@"我是"];
NSLog(@"%@", isHasPre ? @"我是中国人以\"我是\"开头" : @"我是中国人不以\"我是\"开头");
BOOL ishasSuf = [string hasSuffix:@"中国人"];
NSLog(@"%@", ishasSuf ? @"我是中国人以\"中国人\"结尾" : @"我是中国人不以\"中国人\"结尾");
/// 检查字符串string是否包含@"中国"
/// 如果包含就返回@"中国"的范围,如果不包含location和length都是0
NSRange range = [string rangeOfString:@"中国"];
NSLog(@"location = %ld, length = %ld", range.location, range.length);
/// 查出最后一个,的范围,NSBackwardsSearch说明从后往前搜索
NSRange range = [str rangeOfString:@"," options:NSBackwardsSearch];
// 删掉最后一个,
[str deleteCharactersInRange:range];
/// 打印结果
2016-06-17 15:53:28.917 test[44433:11111312] 我是中国人以"我是"开头
2016-06-17 15:53:28.917 test[44433:11111312] 我是中国人以"中国人"结尾
2016-06-17 15:53:28.917 test[44433:11111312] location = 2, length = 2
|
4.SString的截取和替换
1
2
3
4
5
6
7
8
9
10
|
NSString *string = @"我爱北京天安门";
NSLog(@"从指定位置到尾部,包括指定位置的字符 --- %@", [string substringFromIndex:4]);
NSLog(@"从开始到指定位置,不包括指定位置的字符 --- %@", [string substringToIndex:2]);
NSLog(@"按照Range截取字符串 --- %@", [string substringWithRange:NSMakeRange(2, 2)]);
NSLog(@"把第一个字符串的替换成第二个字符串 --- %@", [string stringByReplacingOccurrencesOfString:@"天安门" withString:@"圆明园"]);
/// 打印结果
2016-06-17 18:16:16.245 test[45518:11600896] 从指定位置到尾部,包括指定位置的字符 --- 天安门
2016-06-17 18:16:16.246 test[45518:11600896] 从开始到指定位置,不包括指定位置的字符 --- 我爱
2016-06-17 18:16:16.246 test[45518:11600896] 按照Range截取字符串 --- 北京
2016-06-17 18:16:16.246 test[45518:11600896] 把第一个字符串的替换成第二个字符串 --- 我爱北京圆明园
|
5.NSString与路径
1
2
3
4
5
6
7
8
9
10
11
12
13
|
NSString *string = @"/Users/ankang/Desktop/test";
NSLog(@"%@", [string isAbsolutePath] ? @"是绝对路径" : @"不是绝对路径");
NSLog(@"获取最后一个目录 --- %@", [string lastPathComponent]);
NSLog(@"删除最后一个目录 --- %@", [string stringByDeletingLastPathComponent]);
NSLog(@"在路径后面拼接一个目录 --- %@", [string stringByAppendingPathComponent:@"hehe"]);
NSLog(@"在路径后面拼接目录字符串 --- %@", [string stringByAppendingString:@"/hehe"]);
/// 打印结果
2016-06-17 18:24:10.524 test[45720:11654574] 是绝对路径
2016-06-17 18:24:10.525 test[45720:11654574] 获取最后一个目录 --- test
2016-06-17 18:24:10.525 test[45720:11654574] 删除最后一个目录 --- /Users/ankang/Desktop
2016-06-17 18:24:10.525 test[45720:11654574] 在路径后面拼接一个目录 --- /Users/ankang/Desktop/test/hehe
2016-06-17 18:24:10.525 test[45720:11654574] 在路径后面拼接目录字符串 --- /Users/ankang/Desktop/test/hehe
|
6.NSString与文件扩展名
1
2
3
4
5
6
7
8
9
|
NSString *string = @"/Users/ankang/Desktop/test/test.xcodeproj";
NSLog(@"获得扩展名%@", [string pathExtension]);
NSLog(@"删除尾部扩展名%@", [string stringByDeletingPathExtension]);
NSLog(@"在尾部添加扩展名%@", [@"/Users/ankang/Desktop/test/test" stringByAppendingPathExtension: @"txt"]);
/// 打印结果
2016-06-17 18:30:46.478 test[45859:11696844] 获得扩展名xcodeproj
2016-06-17 18:30:46.479 test[45859:11696844] 删除尾部扩展名/Users/ankang/Desktop/test/test
2016-06-17 18:30:46.479 test[45859:11696844] 在尾部添加扩展名/Users/ankang/Desktop/test/test.txt
|
7.NSString的其他用法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
NSString *string = @"/Users/ankang/Desktop/test/test.xcodeproj";
NSLog(@"字符串长度:%ld", string.length);
NSLog(@"返回字符串index对应的字符:%c", [string characterAtIndex:3]);
NSLog(@"%f", [@"23231345" doubleValue]); /// 严格上说 打印double类型的必须用%f占位符
NSLog(@"%f", [@"23231345" floatValue]);
NSLog(@"%d", [@"23231345" intValue]);
NSLog(@"%ld", [@"23231345" integerValue]);
NSLog(@"转换成C语言字符串:%s", [@"ankang" UTF8String]);
/// 打印结果
2016-06-17 18:42:22.333 test[46275:11782216] 字符串长度:41
2016-06-17 18:42:22.333 test[46275:11782216] 返回字符串index对应的字符:e
2016-06-17 18:42:22.334 test[46275:11782216] 23231345.000000
2016-06-17 18:42:22.334 test[46275:11782216] 23231344.000000
2016-06-17 18:42:22.334 test[46275:11782216] 23231345
2016-06-17 18:42:22.334 test[46275:11782216] 23231345
2016-06-17 18:42:22.334 test[46275:11782216] 转换成C语言字符串:ankang
|
8.NSString去除空
1
2
3
4
5
6
7
8
9
|
NSString *string = @"你 是 不 是 咸 鱼";
NSLog(@"去除所有空格:%@", [string stringByReplacingOccurrencesOfString:@" " withString:@""]);
NSString *string1 = @" 你是不是咸鱼 ";
NSLog(@"去除首尾空格:%@", [string1 stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]);
/// 打印结果
2016-06-17 18:46:36.301 test[46368:11815010] 去除所有空格:你是不是咸鱼
2016-06-17 18:46:36.302 test[46368:11815010] 去除首尾空格:你是不是咸鱼
|
9.NSString分割
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
NSString *string = @"/Users/ankang/Desktop/test/test.xcodeproj";
// 对路径里传入的字符串根据/进行分割然后放入数组中
NSArray *stringArray =[string componentsSeparatedByString:@"/"];
NSLog(@"%@", stringArray);
/// 打印结果,注意第一个空字符串
2016-06-17 18:48:43.397 test[46424:11830584] (
"",
Users,
ankang,
Desktop,
test,
"test.xcodeproj"
)
|