字符串—NSString

NSString是Objective-C的字符串类,用该类声明的对象是不可变的。

字符串的创建:

NSString *str = @"scottdinggo";  //直接赋值

NSString *str = [NSString stringWithFormat:@"scottdinggo"];  //调用类函数赋值

 

NSString *str = [[NSString alloc] initWithString:@"scottdinggo"];  //一般不用这种方法赋值,系统会提示多余(redundant)

NSString *str = [NSString stringWithString:@"scottdinggo"];  //同上

 

当字符串中含有中文时,一般使用这种赋值方法:

NSString *str = [NSString stringWithCString:"scottdinggo" encoding:NSUTF8StringEncoding];

 

字符串比较(按字符对应的ASCll大小):

BOOL result = [str1 isEqualToString:str2];  //判断str1与str2是否相等,相等返回1,否则返回0

或者   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(字符串编码)

1、NSASCllStringEncoding

2、NSUTF8StringEncoding

3、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:@""];

 

 

 

posted @ 2015-05-16 18:42  scott_dingg  阅读(112)  评论(0编辑  收藏  举报