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