object-c中所有的數據類型都是一個對象,創建對象都需要首先使用alloc在堆空間給對象分配一塊空間。這個空間大概爲200個字節左右,所以使用alloc 創建對象一定要釋放對象,當然現在的 xcode版本是不需要你手動釋的,作爲初學者不需要堆內存管理理解太深,但是你應該知道什麼是內存管理,知道內存管理裏面的黃金法則到底是什麼。
//本篇文章針對初學者,怎麼使用NSString/NSSMutableString字符串創建對象, 使用對象的方法。
一.NSString
實例化的方法
//1. 通過字符串對象實例化對象 initWithString
NSString *nsstr=@"abcd"; //*nsstr是一個字符串指針,
NSString *str=[[NSStringalloc]initWithString:nsstr];
NSLog(@"str=%@",str);
//2. 通過從c語言的字符串創建一個對象實例方法---stringWithUTF8String
char *c="abcdef";
NSString *str=[[NSStringalloc]initWithUTF8String:c];
NSLog(@"str=%@",str);
// 類方法---通過從c語言的字符串創建一個對象-NSStringstringWithUTF8String
char *c="abcdef";
NSString *str=[NSStringstringWithUTF8String:c];
NSLog(@"str=%@",str);
//3. 格式化方法創建字符串對象--stringWithFormat
int s1=100;
char *s2="abc";
NSString *str1=@"def";
NSString *str=[[NSStringalloc]initWithFormat:@"%i%s%@",s1,s2,str1];
NSLog(@"str%@",g);
//類方法格式化創建字符串對象---stringWithFormat
int s1=100;
char *s2="abc";
NSString *str1=@"def";
NSString *str=[NSStringstringWithFormat:@"%i%s%@",s1,s2,str1];
NSLog(@"str=%@",str);
//4.獲取字符串的長度
NSLog(@"%lu",[str1 length]); //獲取字符串對象的長度。無符號整形。
//思考.字符串對象的遍歷
NSLog(@"%c",[str1 characterAtIndex:0]);
for(long i=0;i<[str1 length];i++)
{
NSLog(@"%c",[str1 characterAtIndex:i]);
}
//5.判斷字符串是否相等
//返回一個BOOL類型。可以用li打印出來,相等返回1 不等返回0
NSLog(@"%i",[str1 isEqualToString:str2]);
//6.字符串的比較
NSLog(@"%li",[str1 compare:str2]);
//compare 返回三個值,-1,0,1
// NSOrderedSame; 0相等
//NSOrderedAscending; -1升序
//NSOrderedDescending; 1 降序
//7.字符串中查找字符串
NSRange rg=[str1 rangeOfString:@"a"];
//rg.length; NSNotFound 沒有找到
//rg.location; 字符串所在的小標
NSLog(@"location=%zi,length=%zi",rg.location,rg.length);
NSLog(@"是否有後綴=%i",[str3hasPrefix:@"txt"]);
//8.對象轉整形 intValue
NSString *str4=@"100";
NSLog(@"對象轉換爲整形%i",[str4intValue]);
//9.大小寫轉化 uppercaseString lowercaseString
NSString *str5=@"abc";
NSString *str6=@"ABC";
NSLog(@"小寫abc轉大寫%@",[str5 uppercaseString]);
NSLog(@"大寫ABC轉小寫%@",[str5 lowercaseString]);
// 10.找字符串對象下表對應的元素characterAtIndex,遍歷字符串使用比較多characterAtIndex
//將傳入的字符串逆序
//比如輸入@"abcdef"輸出@"fedcba"
NSString *str7=@"abcdef";
NSLog(@"這是字符串的逆序!");
for (long i=[str7 length]-1; i>=0; i--)
{
printf("%c",[str7 characterAtIndex:i]);
}
//11.字符串中查找字符串
//返回的是一個NSrange類型。
//
//typedef struct _NSRange {
//NSUInteger location; 下標位置
// NSUInteger length; 長度
// } NSRange;
NSRange rg=[nsstr1 rangeOfString:@"a"];
//rg.length; NSNotFound 沒有找到
//rg.location; 字符串所在的小標
NSLog(@"location=%zi,length=%zi",rg.location,rg.length);
NSLog(@"location=%zilength=%zi",[nsstr1 rangeOfString:@"a"].location,[nsstr1 rangeOfString:@"a"].length);
//12.查找字符串對象是否含有後綴hasPrefix, hasSuffix
//返回bool類型
NSString *nsstr3=@"abcde.txt";
NSLog(@"是否有前綴=%i",[nsstr3hasPrefix:@"abc"]);
NSLog(@"是否有後綴=%i",[nsstr3hasSuffix:@"txt"]);
//13.字符串對象轉整形 intValue
//字符串對象轉浮點型floatValue
//字符串對象轉雙精度浮點型 doubleValue
//字符串對象轉長整形longLongValue
NSString *nsstr4=@"100";
[nsstr4 doubleValue];
[nsstr4 longLongValue];
[nsstr4 floatValue];
NSLog(@"對象轉換爲整形%i",[nsstr4intValue]);
NSLog(@"對象轉換爲浮點型%f",[nsstr4floatValue]);
NSLog(@"對象轉換爲浮點型%lf",[nsstr4 doubleValue]);
NSLog(@"對象轉換爲長整形%li",[nsstr4
longLongValue]);
//14.將字符串的每個首字母轉化爲大寫的字母capitalizedString
//返回一個字符串指針
NSString *nsstr8=@"abc defg";
NSLog(@"首字母轉化爲大寫%@", [nsstr8 capitalizedString] );
//15.截取字符串substringFromIndex
NSString *nsstr9=@"abcdef";
//從當前位置下標開始,直到結尾.
NSLog(@"截取字符串1%@", [nsstr9 substringFromIndex:3]);
// 從頭部開始,直到當前下標的前一個字符substringWithRange
NSLog(@"截取字符串2%@",[nsstr9 substringToIndex:3]);
//截取字符串範圍substringWithRange
NSRange rang= NSMakeRange(1, 3);
NSLog(@"截取字符串3%@",[nsstr9 substringWithRange:rang]);
//16字符串的分割(componentsSeparatedByString)
NSString *nsstr10=@"a,b,c,d";
NSArray *array= [nsstr10 componentsSeparatedByString:@","];
//遍歷數組
//[arraycount]數組的長度
for (int i=0; i<[array count]; i++) {
NSLog(@"%@",[array objectAtIndex:i]);
}
//16.(stringWithContentsOfFile)文件操作,讀取磁盤txt文件
NSString *str11=[NSStringstringWithContentsOfFile:@"/Users/student/Desktop/helloworld.txt"encoding: NSUTF8StringEncoding error:nil];
NSLog(@"讀取磁盤文件%@",str11);
//17.抓取網頁
NSURL *url=[[NSURLalloc]initWithString:@"http://192.168.88.8/JudgeOnline-new/index.php?c=index&a=center"];
NSString *str13=[NSStringstringWithContentsOfURL:url encoding:NSUTF8StringEncodingerror:nil];
NSLog(@"抓取網頁的內容%@",str13);
二.1.NSMutableString
可變字符串操作,可變字符串操作是沒有返回值的。
//NSMutableString 是一個可變的字符串對象。
NSMutableString *nsstr14=[[NSMutableStringalloc] init];
nsstr14.string=@"abcdef";
[nsstr14 appendString:@" def"];
NSLog(@"str14=%@",nsstr14);
//2.刪除可變字符串deleteCharactersInRange
//刪除範圍
[nsstr14 deleteCharactersInRange:NSMakeRange(2, 3)];
NSLog(@"刪除字符串對象%@", nsstr14);
//3.stringWithCapacity 給予預留空間
NSMutableString *nsstr15=[NSMutableStringstringWithCapacity:10];
constchar *c="abc";
NSMutableString *nsstr16=[[NSMutableStringalloc]initWithCString:c encoding:NSUTF8StringEncoding];
NSLog(@"%@",nsstr6);
// NSMutableString
NSMutableString *nsstr17=[[NSMutableStringalloc]
initWithString:nsstr16];
//4.字符串的拼接stringByAppendingString
NSMutableString *nsstr18=[[NSMutableStringalloc]initWithFormat:@"%i",100];
//nsstring字符串對象的拼接.
NSString *nsstr19=@"helloworld";
NSString *nsstr20=[nsstr19 stringByAppendingString:@"nihaoa"];
NSLog(@"%@",nsstr20);
//5.字符串的替換
NSString *nsstr21=[nsstr20 stringByReplacingOccurrencesOfString:@"ell"withString:@"koo"];
NSLog(@"字符的替換%@",nsstr21);
[nsstr20 stringByReplacingOccurrencesOfString:@"el"withString:@"kk"options:NSCaseInsensitiveSearchrange: NSMakeRange(1,2)];
}