目录

NSString的各种处理

程序员经常操作的事情估计就是字符串的各种处理了,这篇说一下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"
    )