字符串—NSString

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

相關文章
相關標籤/搜索