iOS,ios9
/*________________________NSString(不可變字串)________________________*/
//________________________1.字串的建立___________________________________//
//建立字串常量
NSString *string1 = @"Hello"; //內容不變
string1 = @"Hello world";
//建立字串
NSString *string2 = [[NSString alloc] initWithString:@"Hello"]; //string2 = hello
NSString *string3 = [[NSString alloc] initWithFormat:@"Hello %@",string2]; //string3 = hello hello
NSLog(@"string2 = %@",string2);
NSLog(@"string3 = %@",string3);
//initWithFormat可以放預留位置(格式化符)。有拼接功能(字串,包括基礎資料型別 (Elementary Data Type))
//initWtihformat用途樣本:
//例如:查詢到某一結果,將所有結果拼接後輸出
NSString *s1 = @"zhangsan";
NSString *s2 = @"lisi";
NSString *s3 = @"wangwu";
//拼接字串
NSString *string4 = [NSString stringWithFormat:@"%@,%@,%@",s1,s2,s3];
NSLog(@"%@",string4);
//基礎資料型別 (Elementary Data Type)也可以拼接(initWithFormat)
int age =24;
NSString *string5 = [[NSString alloc] initWithFormat:@"%@的年齡:%d",s1,age];
NSLog(@"string5 = %@",string5);
//________________________2.字串的比較______________________________________
NSString *string6 = @"abck";
NSString *string7 = @"88888";
//一下比較兩個指標地址是否相同,而不是比較字串中的內容
// if (string6 == string7 )
//* isEqualToString 比較兩個字串中的內容是否相同。(區分大小寫)
if ([string6 isEqualToString:string7]) {
NSLog(@"string6與string7內容相同");
}
NSString *string8 = @"abc";
NSString *string9 = @"abc";
if (string8 == string9) {
NSLog(@"string8 = string9"); //YES
}
//對比以下
NSString *string10 = [[NSString alloc] initWithFormat:@"abc%@",@"def"];
NSString *string11 = [[NSString alloc] initWithFormat:@"abc%@",@"def"];
if (string10 == string11) {
NSLog(@"string10 = string11"); //NO
}
if ([string10 isEqualTo: string11]) {
NSLog(@"string10,string11內容相同"); //YES
}
NSString *string12 = [[NSString alloc] initWithString:@"abc"];
NSString *string13 = [[NSString alloc] initWithString:@"abc"];
if (string12 == string13) {
NSLog(@"string12 = string13"); //YES reason:iniWithString不是在堆區上建立的,而是在常量區建立
}
/*
1.initWithString不是在堆區上建立的,而是在常量區建立(此未編譯器的最佳化)
2.iniWithFormat:在堆區建立。
*/
//__________________字串忽略大小寫比較caxeInsensitiveCompare______________
//比較大小
NSString *string14 = @"zhangsan";
NSString *string15 = @"ZHANGSAN";
//caseInsensitiveCompare忽略大小寫比較
//typedef NS_ENUM(NSInteger, NSComparisonResult) {NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending};
//- (NSComparisonResult)caseInsensitiveCompare:(NSString *)string;
NSComparisonResult result = [string14 caseInsensitiveCompare:string15];
if (result == NSOrderedSame) {
NSLog(@"string14,string15忽略大小寫比較相同");
}
NSString *string16 = @"a";
NSString *string17 = @"b";
NSComparisonResult result2 = [string16 compare:string17];
if (result2 == NSOrderedAscending) {
NSLog(@"string16 < string17");
} else if (result2 == NSOrderedSame){
NSLog(@"string16 = string17");
} else if (result2 == NSOrderedSame) {
NSLog(@"string16 > string 17");
}
//_________________3.字串的其他用法________________
//3.1length:擷取字串的長度
NSString *string18 = @"abcdef"; //@"中文"(長度為2)
NSInteger len = [string18 length];
NSLog(@"leng= %ld",len);
//3.2轉大小,寫
NSString *string19 = @"hElllo";
//uppercaseString:將字串中的字母全都轉成大寫
NSLog(@"upper:%@",[string19 uppercaseString]);
//轉小寫
NSLog(@"lower:%@",[string19 lowercaseString]);
//首字母大寫
NSLog(@"capitalizedString:%@",[string19 capitalizedString]);
//3.3將字串轉成本資料類型
NSString *string20 = @"3.14";
//錯誤:強轉不能改變對象本身
// float f2 = (float) string20; //錯誤提示:Pointer cannot be cast be cast to type 'float'
float f = [string20 floatValue];
NSLog(@"floatValue:%f",f);
NSString *string21 = @"1";
bool b = [string21 boolValue]; //true
NSLog(@"%i",b);
//3.4 字串的截取(***)
NSString *string22 = @"abcdef";
//substringToIndex:從字串的開始位置截取到指定位置(不包含指定位置的字元0
NSString *substring1 = [string22 substringToIndex:3];
NSLog(@"subtirng1 = %@",substring1);
//substirngFromIndex:從指定位置截取到字串的末尾(包含制定位置的字元)
NSString *substring2 = [string22 substringFromIndex:1];
NSLog(@"subtirng2 = %@",substring2);
NSRange rang = {1,4};
// NSRange rang = NSMakeRange(1, 4); //等小於 NSRange rang = {1,4};
NSString *substring3 = [string22 substringWithRange:rang];
NSLog(@"sustirng3 = %@",substring3);
//3.5 字串的追加
NSString *string23 = @"Android";
//在字串string23後面追加@" ios"
NSString *string24 = [string23 stringByAppendingString:@" ios"];
NSLog(@"string24 = %@",string24);
NSString *string25 = [string23 stringByAppendingFormat:@" %@%d",@"ios",7];
NSLog(@"string25 = %@",string25);
//3.6 字串的尋找rangeOfString
NSString *string26 = @"www.iphonetrain.com/ios.html";
NSRange rg = [string26 rangeOfString:@"ios"];
//存在沒有要尋找的字串問題
//NSNotFound相關定義:enum {NSNotFound = NSIntegerMax};#define NSIntegerMax LONG_MAX
if(rg.length != NSNotFound) {
NSLog(@"location:%ld,length:%ld",rg.location,rg.length);
}