NSString从父字符串提取子字符串

NSString除了创建, 对比等等方法, 它还可以在父字符串中提取一段字符形成一个新的子字符串.

 

使用的方法一共有三种:

substringToIndex:如果我在这方法的后面输入一个6, 意思就是截取从第一到第六个的字符, 并形成一个新的子字符串, 类似于开区间, (0 <= a > 6)

substringFromIndex:如果我在这方法的后面输入一个5, 意思就是截取从第五到最后一个的字符串, 并形成一个新的子字符串, 类似于闭区间, (5 <= a >=x)

substringWithRange:这个方法需要配合一个叫做NSMakeRange来使用, 需要使用NSMakeRange返回一个提取的范围给substringWithRange, 然后才能提取你要的字符, 并形成一个新的字符串.

 

这里顺便说一下什么NSMackeRange, NSMackeRange在C语言中, 就相当于结构体一样的存在, 它里面声明了一个位置和长度的整数类型, 所以在下面的例子当中, 我们也可以看到NSMackeRange后面为什么要写(3, 4). 如果想了解更加详细的资料, 麻烦请去看一下apple公司的官方文档.

 

下面让我们来看看一个简单的例子:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //介绍的是在父字符串中提取子字符串
        
        NSString *str = @"0123456789";
        //声明父字符串
        
        NSString *str2 = [str substringToIndex:6];
        //创建子字符串, 并且提取父字符串的前6个字符(但是不包括第6个字符)等字符形成一个新的字符串.
        //返回给str2, 意思类似开区间(比如像 0 <= a > 6).
        
        NSString *str3 = [str substringFromIndex:6];
        //substringFromIndex表示的是从第六个字符一直到最后一个字符的提取, 并且形成一个新的字符串.
        //返回给str3, 相当于一个闭区间(比如像 6 <= a >= 9).
        
        //NSRange range = {3, 4};
        //3表示的是提取的初始位置.
        //4表示的是提取字符的长度.
        //NSString *str4 = [str substringWithRange:range];
        //根据指点范围提取字符串.
        NSString *str4 = [str substringWithRange:NSMakeRange(3, 4)];
        //这是更加简单的写法, NSMakeRange是一个C语言的函数, 特征就是用圆括号表示.
        //NSMakeRange的函数就是创建一个range, 输入location和length, 并返回值就是一个Range类型.
        
        NSLog(@"\nstr = %@", str);
        NSLog(@"\nstr2 = %@", str2);
        NSLog(@"\nstr3 = %@", str3);
        NSLog(@"\nstr4 = %@", str4);
        //这里提取出来的字符串, 是提出来之后作为独立的新字符串存在, 而不是去修改原本的字符串.
        //新字符串只是原字符串的一部分.
    }
    return 0;
}

输出的结果:

2014-10-11 15:31:54.565 DrawNSString[1151:303] 
str = 0123456789
2014-10-11 15:31:54.567 DrawNSString[1151:303] 
str2 = 012345
2014-10-11 15:31:54.567 DrawNSString[1151:303] 
str3 = 6789
2014-10-11 15:31:54.567 DrawNSString[1151:303] 
str4 = 3456
Program ended with exit code: 0

 

posted @ 2014-10-11 15:34  背着吉他去流浪  阅读(1030)  评论(0编辑  收藏  举报