OC字串NSString,ocnsstring
==========================
物件導向編程進階和字串
==========================
Δ一.類的設計模式—單例
【單例】程式允許過程中,有且僅有一塊記憶體空間存在,這種類的設計模式成為單例
【問】什麼時候用到單例
【答】資料共用的時候
1.單例的書寫格式
以+(加號)開頭的方法,可以直接被類調用;-(減號)開頭方法 ,是對象方法,用對象來調用;
2.認識單例
【見singleDemo】
【注】單例方法名字隨便起,但是盡量保證見名知意!
練習1:建立一個單例類single,有一個typeid屬性。 建立一個dog類,一個cat類;
要求:dog類中負責修改single類的屬性值,cat負責取出typeid值。
【思考】如果不用單例,如何??
二.get和set方法以及.屬性
練習2:建立一個cat類,代碼實現get和set方法,cat類中有speed 成員變數。
要求:第一種方式用get、set方式
第二種方式用@property方式
練習3:要求練習1中的題目用@property方式修改
====================
字串
====================
一.認識oc中的字串
oc中以 @“” 包含的內容,是字串;無論@“”包含了字串的長度為多少。
【例如】:@“a”,@“123”,@“_%^&*”,
【注】c語言中字串是用“”,oc中是用@“”
NSString
【見strDemo1】
//聲明了一個類型為NSString 的字串str
//NSString 是一個類的類型,用法跟基礎類型一樣
//NSString 這個類是蘋果公司封裝好的一個字串類
//定義了一個str 這個物件變數,給賦初始值為@"hello world!"
NSString* str = @"hello world!";
//c字串
// char a[64]="hello";
// a[0],a[1]...
// NSString* str1 = [[NSString alloc]initWithFormat:@"%@",str];
// NSLog(@"%@",str1);
//求字串長度 --- length
//oc中 常用int類型,NSUInteger不常用
NSUInteger length = [str length];
NSLog(@"%ld",length);
//∆萬能拼接字串
NSString* Str1 = @"yudejun";
NSString* Str2 = @"xijinping";
//oc 中 字串的格式轉化符是:%@
//編譯器在碰到格式化轉化符的時候,會自動替換成後面參數所對應的變數值
NSString* Str3 = [NSString stringWithFormat:@"%@ and %@",Str1,Str2];
NSLog(@"%@",Str3);
//【練習】
//請拼接2個字串,第一個字串內容為@“你好”,第二個字串為@“中國”;拼接完成之後列印出長度
NSString* str4 = @"你好";
NSString* str5 = @"中國";
NSString* str6 = [NSString stringWithFormat:@"%@%@",str4,str5];
NSString* str6 = [NSString stringWithFormat:@“%d”,324123];
NSLog(@"%ld",[str6 length]);
//字串的轉化
NSString* StrInt = @"123456789987654321";
int a = [StrInt intValue];
NSLog(@"%d",a);
long long b = [StrInt longLongValue];
//@“0.1234”
//NSString* StrFloat = @"0.1234";
float c = [@"0.1234" floatValue];
//練習 : 計算@“1234” @“0.25” @“199” @“0.5” 這四個數的值,並列印出來
//字串分割
//【注】字串分割要在字串有效長度範圍內
NSString* tempStr = @"helloworld";
// NSString* FStr = [tempStr substringFromIndex:5];
// NSString* FStr = [tempStr substringToIndex:5];
NSRange range = {2,3};
NSString* FStr = [tempStr substringWithRange:range];
NSLog(@"%@",FStr);
//字串的比較
NSString* tem1 = @"abc";
NSString* tem2 = @"abc";
//判斷tem1 是否等於 tem2
if ([tem1 isEqualToString:tem2]) {
NSLog(@"相等");
}
else
{
NSLog(@"不相等");
}
NSComparisonResult result = [tem1 compare:tem2];
if (result == NSOrderedAscending) {
NSLog(@"tem2 > tem1");
}
else if (result == NSOrderedDescending)
{
NSLog(@"tem2 < tem1");
}else if (result == NSOrderedSame)
{
NSLog(@"tm2 == tem1");
}
//BOOL 讀作布爾類型,只有2種狀態,真或者假,可以用1、0也可以用yes 、no
//字串首碼和尾碼判斷
NSString* string = @"http://www.baidu.com";
BOOL have = [string hasPrefix:@"http://"];
if (have == YES) {
NSLog(@"是http://開頭");
}
else
{
NSLog(@"不是http://開頭");
}
BOOL havejiewei = [string hasSuffix:@"com"];
if (havejiewei) {
NSLog(@"是com結尾");
}
else
{
NSLog(@"不是com結尾");
}
//轉成大寫
NSLog(@"%@",[string uppercaseString]);
//轉成小寫
[string lowercaseString];
//所有單字首大寫
[string capitalizedString];
//尋找字串中的某個字串,進行替換,第一個參數是要尋找的字串,第二個字串為需要替換成的字串
string = [string stringByReplacingOccurrencesOfString:@"www" withString:@"googl"];
NSLog(@"%@",string);
NSString* tmp = @"ceshishuju";
//=========================================
NSMutableString* m_str = [[NSMutableString alloc]initWithString:tmp];
//字串的修改
[m_str setString:@"hello world"];
//字串的追加
[m_str appendFormat:@" nihao"];
//字串的刪除
NSRange rang = {1,2};
[m_str deleteCharactersInRange:rang];
//字串的插入
[m_str insertString:@"xijinping" atIndex:3];
NSLog(@"%@",m_str);
//∆以NSMutable開頭的都是可變類型,以NSMutable開頭定義的對象都是可以對資料進行修改;
// NSString //不可變字串
// NSMutableString//可變字串
// NSArray// 不可變數組
// NSMutableArray//可變數組
// NSDictionary//不可變字典
// NSMutableDictionary//可變字典
//可變的意思是可以對這個類型定義的變數進行修改或者刪除操作