NSString是Objective-C的字符串类,用该类声明的对象是不可变的。api
字符串的建立:数组
NSString *str = @"scottdinggo"; //直接赋值函数
NSString *str = [NSString stringWithFormat:@"scottdinggo"]; //调用类函数赋值编码
NSString *str = [[NSString alloc] initWithString:@"scottdinggo"]; //通常不用这种方法赋值,系统会提示多余(redundant)spa
NSString *str = [NSString stringWithString:@"scottdinggo"]; //同上code
当字符串中含有中文时,通常使用这种赋值方法:component
NSString *str = [NSString stringWithCString:"scottdinggo丁" encoding:NSUTF8StringEncoding];orm
字符串比较(按字符对应的ASCll大小):对象
BOOL result = [str1 isEqualToString:str2]; //判断str1与str2是否相等,相等返回1,不然返回0ci
或者 BOOL result = str1 == str2;
BOOL result = [str1 isGreatThan:str2]; //判断str1是否大于str2(不包括等于),大于返回1,不然返回0
BOOL result = [str1 isLessThan:str2]; //判断str1是否小于str2(不包括等于),小于返回1,不然返回0
不区分大小写进行比较:
NSComparisonResult result = [str1 caseInsensitiveCompare:str2]; //str1 < str2 返回-1,相等返回0,大于返回1
字符串比较(按字母顺序)
BOOL result = [str1 compare:str2] == NSOrderedSame; //判断两个字符串是否相等,若是相等,返回YES,不然返回NO
BOOL result = [str1 compare:str2] == NSOrderedAscending; //按字母顺序判断两个字符串的大小,大于则返回YES,不然返回NO
BOOL result = [str1 compare:str2] == NSOrderedDescending; //按字母顺序判断两个字符串的大小,小于则返回YES,不然返回NO
输出大写或者小写字母:
NSLog(@"%@",[str1 uppercaseString]); //输出大写
NSLog(@"%@",[str1 lowercaseString]); //输出小写
NSLog(@"%@",[str1 capitalizedString]); //首字母大写
NSStringEncoding(字符串编码)
一、NSASCllStringEncoding
二、NSUTF8StringEncoding
三、NSUnicodeStringEncoding
Character Encoding:
计算机中用二进制字符串来表示各类信息,每个二进制位有两种状态(0和1),一个字节由8个二进制位组成,能够表示256种状态,每一种状态表示一种字符
在计算机发展初期,美国定制了一套字符编码,弄清楚了英语字符与二进制位之间的关系,这套字符编码就是如今的ASCll编码(Amerian Standard Code For Information Interchange)
ASCll码一共规定了128个字符的编码,只占用了一个字节的后七位,第一位统一规定为0;
英语字母用一个字节的后七位就能表示所有,若是用来表示其余语言,128种状态是不够的
因此世界上存在多种编码方式,同一种状态可能表示的是不一样的字符,当你要打开一个文本文件时,就必须选择该文本文件以何种编码方式打开,否则就会出现乱码的状况
Unicode主要就是解决此类问题的,它将世界上因此的符号都归入其中,每个符号都给予一个独一无二的编码
UTF8是Unicode实现方式之一,是一种变长的编码方式
对于单字节的字符,字节的第一位设为0,后七位是这个字符的Unicode码
对于n字节的字符,第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位都设为10,空余的位是这个字符的Unicode码
将char * 转化为 NSString
char s[] = "scottding";
NSString *str = [NSString stringWithCString:s encoding:NSUTF8StringEncoding];
将NSString转化为Char *
NSString *s = @"scottding";
const char *str = [s UTF8String];
从文本文件中读取:
NSString *s = @"/Users/admin/Desktop/LeetCode/unique_paths.cpp";
NSString *str = [NSString stringWithContentsOfFile:s encoding:NSUTF8StringEncoding error:nil];
或者:
NSURL *s = [NSURL URLWithString:@"file:///Users/admin/Desktop/LeetCode/unique_paths.cpp"];
NSString *str = [NSString stringWithContentsOfURL:s encoding:NSUTF8StringEncoding error:nil];
求字符串长度:
[str length] // 返回字符串str的长度
类型转换:
NSString *s = @"3.14";
float f = [s floatValue];
int d = [s intvalue];
把字符串转换成字符数组:
NSString *s = @"abc abc abc";
NSArray *array = [s componentsSeparatedByString:@" "];
字符串截取:
NSString *str = [s substringFromIndex:3]; // 从字符串s的下表为3的位置开始截取到结尾
NSString *str = [s substringToIndex:3]; // 从字符串开头截取到字符串下表为3的位置(不包括位置3的字符)
NSRange range = {3 , 4};
NSString *str = [s substringWithRange:range]; //从位置3开始,截取4个字符
字符串拼接:
NSString *str = [NSString stringWithFormat:@"%@%@",s1,s2]; //将字符串s1和s2拼接成一个字符串
NSString *str = [s1 stringByAppendingString:s2]; //同上
字符串转换成数组:
NSArray *arrar = [s componentsSeparatedByString:@" "]; //componentsSeparatedByString 对字符串进行分离
字符串查找:
NSRange range = [s rangeOfString:@"scottdinggo"];
去掉字符串中的空格:
NSString *str = [s stringByReplacingOccurrencesOfString:@" " withString:@""];