iOS NSString的使用

#pragma mark 字符初始化

//創(chuàng)建一個不可變字符串str1 值是常量字符串

//打印字符串用%@來打印

//%@還可以打印對象

NSString * str1 = @"常量字符串";

NSLog(@"%@",str1);

//用字符串創(chuàng)建字符串? 構(gòu)造

NSString * str2 = [[NSString alloc]initWithString:str1];

NSLog(@"%@",str2);

NSString*str=[[NSString alloc]initWithFormat:@"asfgrdsf",nil];

//用字符串的格式化來初始化創(chuàng)建一個字符串

//API

NSString * str3 = [[NSString alloc]initWithFormat:@"%@%d%f",@"abc",123,12.3];

NSLog(@"%@",str3);

//用字符串的類方法創(chuàng)建一個格式化字符串

NSString * str4 = [NSString stringWithFormat:@"%@%d",@"def",456];

NSLog(@"%@",str4);

#pragma mark 將C語言字符串轉(zhuǎn)換成OC字符串

//OC中只要遇到字符串編碼的問題均為NSUTF8StringEncoding

//萬國碼unicode

NSString * str5 = [[NSString alloc]initWithCString:"ABC" encoding:NSUTF8StringEncoding];

NSLog(@"%@",str5);

char * p = "abc";

NSString? * str5_1 = [[NSString alloc]initWithUTF8String:p];

NSLog(@"%@",str5_1);

//類方法轉(zhuǎn)換C字符串

NSString * str5_2 = [NSString stringWithCString:p encoding:NSUTF8StringEncoding];

NSString * str5_3 = [NSString stringWithUTF8String:p];

NSLog(@"%@ %@",str5_2, str5_3);

#pragma mark 字符串的比較

//判斷字符串中不能是用 == 判斷

//在設(shè)計NSString時,內(nèi)部應(yīng)用了一種優(yōu)化的思想, 享元設(shè)計思想

//在設(shè)計字符串的時候,會有一個緩沖池,只要緩沖池中有當(dāng)前字符串,那么就會返回當(dāng)前字符串的地址,不會再去重復(fù)創(chuàng)建,因為大量的穿件字符串會消耗內(nèi)存,所以提過了這種方式,當(dāng)我們是用StringWithFormat的時候回重新創(chuàng)建一個新的字符串,所以不能用 == 號進行判斷

//在判斷字符串中 == 判斷的是字符串的指針地址是否相等,存才一定判斷錯誤的風(fēng)險.

//在實際開發(fā)中不能是用== 而是使用專門判斷字符串想的方法 isEqualToString

NSString * str6 = @"ab";

NSString * str6_1 = @"你好";

//接收返回值

//BOOL isOK = [str6 isEqualToString:str6_1];

if([str6 isEqualToString:str6_1]){

NSLog(@"%@ == %@",str6,str6_1);

}else{

NSLog(@"%@ != %@",str6,str6_1);

}

//獲取字符串的長度

//在NSString中 任何字母,數(shù)字,中文字符的長度都是1

NSLog(@"%@的長度是%ld",str6,[str6 length]);

//@"abcde";

//字符串的位置是從0開始計數(shù)的

//一個漢字占2個字節(jié)

NSString * str7 = @"xcode";

//獲取單個字符

//unichar 是兩個字節(jié)的 char

//字符串的位置是從0開始計數(shù)的

unichar newChar = [str7 characterAtIndex:4];

NSLog(@"newChar = %c",newChar);

//NSString中有漢字 "%C"

unichar hanzi = [str6_1 characterAtIndex:0];

NSLog(@"hanzi = %C",hanzi);

//比較兩個字符串的大小

NSString * str8 = @"yang chang";

NSString * str8_1 = @"B duan";

NSComparisonResult result =[str8 compare:str8_1];

if (result == NSOrderedSame) {

NSLog(@"%@ = %@",str8 ,str8_1);

//升序 前者小 后者大

}else if (result == NSOrderedAscending){

NSLog(@"%@ < %@",str8,str8_1);

//降序 前者大 后者小

}else if(result == NSOrderedDescending){

NSLog(@"%@ > %@",str8,str8_1);

}

#pragma mark 字符串的拼接

NSString * str9 = @"北京";

NSString * str9_1 = @"最帥";

//str9_1拼接到str9的后面

NSString * str9_2 =? [str9 stringByAppendingString: str9_1];

NSLog(@"%@",str9_2);

//格式化拼接 在初始化字符串的同時進行拼接

str9_2 = [str9 stringByAppendingFormat:@"%@%d%f",str9_1,520,520.0];

NSLog(@"%@",str9_2);

//如何遍歷字符串中每一個字符

NSString * str10 = @"abcdefgh";

for(int i = 0; i<[str10 length];i++){

char c = [str10 characterAtIndex:i];

NSLog(@"%d = %c ",i,c);

}

#pragma mark 字符串的查找

NSString * str11 = @"你好北京123";

//在當(dāng)前字符串str11中查找123這個字符串,將他的位置和長度返回

NSRange range = [str11 rangeOfString:@"123"];

NSLog(@"loc = %lu , len = %lu",range.location,range.length);

/**

typedef struct _NSRange {

NSUInteger location;//這個是位置不是長度!!!!!

NSUInteger length;//這個是長度不是位置!!!

} NSRange;

*/

//判斷當(dāng)前字符串是否存在?

if(range.location != NSNotFound){

NSLog(@"123在%@中位置是%lu",str11,range.location);

}else{

NSLog(@"123不再字符串");

}

if(range.length != 0){

NSLog(@"123在%@中長度是%lu",str11,range.length);

}else{

NSLog(@"不再");

}

#pragma mark 字符串的截取

NSString * str12 = @"北京歡迎您,iOS入門還是比較容易的ios";

//是從字符串str12中截取出一個子串(從原串第0個字符開始截取到傳入得[值-1]的位置)

NSString * str12_1 = [str12 substringToIndex:5];

NSLog(@"str12_1 = %@",str12_1);

//字符串str12中截取指定位置6到字符串的結(jié)尾

NSString * str12_2 = [str12 substringFromIndex:6];

NSLog(@"str12_2 = %@", str12_2);

//通過已知的范圍range在原字符串中查找子串

//第一個是位置

//第二個是長度

NSRange range2 = {2,4};

NSLog(@"%@",[str12 substringWithRange:range2]);

//將原串str12指定范圍內(nèi)的字符用@"努力學(xué)習(xí)"替換

NSString * str12_3 = [str12 stringByReplacingCharactersInRange: NSMakeRange(0, 9) withString:@"努力學(xué)習(xí)"];

NSLog(@"str12_3 = %@",str12_3);

#pragma mark 判斷前綴和后綴

NSString * str13 = @"http://www.baidu.com";

//檢查某個字符串是否已指定的字符串開始(前綴)

if([str13 hasPrefix:@"http"]){

NSLog(@"是");

}else{

NSLog(@"不是");

}

//檢查后綴

if([str13 hasSuffix:@"com"]){

NSLog(@"是");

}else{

NSLog(@"不是");

}

#pragma mark 字符串的轉(zhuǎn)換

NSString * str14 = @"abc";

//將str14轉(zhuǎn)換成大寫

str14 = [str14 uppercaseString];

NSLog(@"%@",str14);

//將str14轉(zhuǎn)換成小寫

str14 = [str14 lowercaseString];

NSLog(@"%@",str14);

//將基本類型轉(zhuǎn)換型字符串

//? ? stringWithFormat

//? ? initWithFormat

//將字符串轉(zhuǎn)換成基本數(shù)據(jù)類型

NSString * str14_1 = @"1";

int a = [str14_1 intValue];

//floatValue

//doubleValue

NSString * str14_2 = @"YES";

BOOL isOK = [str14_2 boolValue];

//boolValue

NSLog(@"%d",a);

//@"1"

#pragma mark 字符串的拆分

NSString * str15 = @"a,b,c, d";

//用指定的分隔符將字符串才分成數(shù)組

//is+-n*/io=pp

NSArray * array =? [str15 componentsSeparatedByString:@","];

NSLog(@"%@",array);

NSArray * array5 = [str15 componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@", "]];

//set是集合

//[NSCharacterSet characterSetWithCharactersInString:@", "]這個方法創(chuàng)建一個集合的對象,返回對象地址,字符集合中的字符,來自字符串的@", "

NSLog(@"%@",array5);

//? ? for (int i= 0; i<[array count];i++) {

//? ? ? ? NSLog(@"%@",[array objectAtIndex:i]);

//? ? }

#pragma mark 從指定文件讀取字符串

//將文件的內(nèi)容讀入到字符串中

//第一個參數(shù)是文件的路徑

//第二個字符編碼

//第三個錯誤信息

NSString * str16 = [NSString stringWithContentsOfFile:@"/Users/hhh/Desktop/github.txt" encoding:NSUTF8StringEncoding error:nil];

NSLog(@"str16 = %@",str16);

//從網(wǎng)上讀取文件內(nèi)容到字符串中

//第一個 網(wǎng)址

//第二個 字符編碼

//第三個 錯誤信息

NSString * str17 = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://10.0.178.5/resource/github.txt"]encoding:NSUTF8StringEncoding error:nil];

NSLog(@"str17 = %@",str17);

//寫入文件

//第一個是目標(biāo)文件路徑

//第二個是否寫入緩存(原子)

//第三個編碼

//第四個錯誤信息

//如果沒有文件,那么就會創(chuàng)建出一個新的文件,如果原文件已經(jīng)存在,那么會覆蓋原文件

[str12 writeToFile:@"/Users/hhh/Desktop/aa.txt"? atomically:YES encoding:NSUTF8StringEncoding error:nil];

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容