字符串—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:@""];
?
?
?
轉載于:https://www.cnblogs.com/scottdinggo/p/4508367.html
總結
以上是生活随笔為你收集整理的字符串—NSString的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hihoCoder #1068 : RM
- 下一篇: 每日一函数2015/05/17 ---2