在Foundation框架中,提供了NNString類,用於處理字符串對象。在C語言中字符串在一對引號中表示。
OC是C語言的一種延展,換句話說,OC語言是建立在C語言的基礎之上(C的基礎之上添加了面向對象的內容,smalltalk語言)。
因此,為了區別兩者的字符串,OC語言的字符串必須以@開頭,引號當中則是字符串的內容,如@”abc“.此外,NSString對象,
一旦被創建,就不可以在進行修改。如若需要一個可以更改的字符串對象,需要創建NSMutableString實例。
1:下面是一些創建字符串的方法:
//創建一個字符串常量
NSString *string1=@"這個一個字符串常量"; //創建一個空的字符串 NSString *string2=[[NSString alloc]init]; NSString *string3=[NSString string]; //快速創建一個字符串 NSString *string4=[[NSString alloc]initWithString:@"快速創建一個字符串"]; NSString *string5=[NSString stringWithString:@"快速創建一個字符串"]; //快速創建一個格式化字符串 int number=2; NSString *string6=[[NSString alloc]initWithFormat:@"%d",number]; NSString *string7=[NSString stringWithFormat:@"%d",number];
2:比較字符串的內容是否相同
NSString *string6=[[NSString alloc]initWithFormat:@"%d",number]; NSString *string7=[NSString stringWithFormat:@"%d",number]; NSLog(@"%@,%@,%@,%@,%@,%@,%@",string1,string2,string3,string4,string5,string6,string7); //比較兩個字符串是否相等 if([string6 isEqualToString:string7]){ NSLog(@"相同內容"); }else{ NSLog(@"不同內容"); }
3:比較兩個字符串是否為同一個對象
//比較兩個字符串是否是同一個對象 NSString *string8=[NSString stringWithString:@"123"]; NSString *string9=[NSString stringWithString:@"123"]; if([string8 isEqualToString:string9]){ NSLog(@"相同內容"); }else{ NSLog(@"不同內容"); } if(string8==string9){ NSLog(@"同一個對象"); }else{ NSLog(@"不同對象"); }
4:比較字符串的大小
//比較字符串的大小 NSString *string10=[[NSString alloc]initWithString:@"a"]; NSString *string11=[[NSString alloc]initWithString:@"b"]; NSComparisonResult result=[string10 caseInsensitiveCompare:string11]; NSLog(@"%ld",result); //-1表示升序
5:創建字符串還有如下一些常用的方法:
- (id)init; - (id)initWithCharactersNoCopy:(unichar *)characters length:(NSUInteger)length freeWhenDone:(BOOL)freeBuffer; /* "NoCopy" is a hint */ - (id)initWithCharacters:(const unichar *)characters length:(NSUInteger)length; - (id)initWithUTF8String:(const char *)nullTerminatedCString; - (id)initWithString:(NSString *)aString; - (id)initWithFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2); - (id)initWithFormat:(NSString *)format arguments:(va_list)argList NS_FORMAT_FUNCTION(1,0); - (id)initWithFormat:(NSString *)format locale:(id)locale, ... NS_FORMAT_FUNCTION(1,3); - (id)initWithFormat:(NSString *)format locale:(id)locale arguments:(va_list)argList NS_FORMAT_FUNCTION(1,0); - (id)initWithData:(NSData *)data encoding:(NSStringEncoding)encoding; - (id)initWithBytes:(const void *)bytes length:(NSUInteger)len encoding:(NSStringEncoding)encoding; - (id)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)len encoding:(NSStringEncoding)encoding freeWhenDone:(BOOL)freeBuffer; /* "NoCopy" is a hint */ + (id)string; + (id)stringWithString:(NSString *)string; + (id)stringWithCharacters:(const unichar *)characters length:(NSUInteger)length; + (id)stringWithUTF8String:(const char *)nullTerminatedCString; + (id)stringWithFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2); + (id)localizedStringWithFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2); - (id)initWithCString:(const char *)nullTerminatedCString encoding:(NSStringEncoding)encoding; + (id)stringWithCString:(const char *)cString encoding:(NSStringEncoding)enc; /* These use the specified encoding. If nil is returned, the optional error return indicates problem that was encountered (for instance, file system or encoding errors). */ - (id)initWithContentsOfURL:(NSURL *)url encoding:(NSStringEncoding)enc error:(NSError **)error; - (id)initWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error; + (id)stringWithContentsOfURL:(NSURL *)url encoding:(NSStringEncoding)enc error:(NSError **)error; + (id)stringWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error; /* These try to determine the encoding, and return the encoding which was used. Note that these methods might get "smarter" in subsequent releases of the system, and use additional techniques for recognizing encodings. If nil is returned, the optional error return indicates problem that was encountered (for instance, file system or encoding errors). */ - (id)initWithContentsOfURL:(NSURL *)url usedEncoding:(NSStringEncoding *)enc error:(NSError **)error; - (id)initWithContentsOfFile:(NSString *)path usedEncoding:(NSStringEncoding *)enc error:(NSError **)error; + (id)stringWithContentsOfURL:(NSURL *)url usedEncoding:(NSStringEncoding *)enc error:(NSError **)error; + (id)stringWithContentsOfFile:(NSString *)path usedEncoding:(NSStringEncoding *)enc error:(NSError **)error;6:求字符串的長度
//求字符串的長度 NSString *string12=[[NSString alloc]initWithString:@"abcd"]; NSLog(@"string2的長度為:%ld",[string12 length]);
7:字符串的轉換
//字符串的轉換
NSString *string13=[[NSString alloc]initWithString:@"HelloWorld"]; NSLog(@"upper %@",[string13 uppercaseString]); NSLog(@"lower %@",[string13 lowercaseString]); NSLog(@"capitalized %@",[string13 capitalizedString]);
8:字符串轉換成基本數據類型
//字符串轉成基本數據類型 NSString *string14=[[NSString alloc]initWithString:@"3.14"]; NSLog(@"%.2f\n",[string14 floatValue]);9:字符串轉換成數組
//字符串轉換成數組 NSString *string15=[[NSString alloc]initWithString:@"abc bcd xyz"]; NSArray *array=[string15 componentsSeparatedByString:@""]; NSLog(@"%@\n",array);10:字符串的截取
//截取字符串 NSString *string16=@"abcdefg"; NSLog(@"%@",[string16 substringToIndex:2]); NSLog(@"%@",[string16 substringFromIndex:2]); NSRange range; range.location=2; range.length=3; NSLog(@"%@",[string16 substringWithRange:range]);11:字符串的拼接:
//字符串的拼接 NSString *string17=@"abc"; NSString *string18=@"xyz"; NSString *appString=[[NSString alloc]initWithFormat:@"這是拼接的字符串:%@ and %@",string17,string18]; NSString *appString2=[string17 stringByAppendingString:@"123"]; NSString *appstring3=[string17 stringByAppendingFormat:@"%@",string18]; NSLog(@"%@,%@,%@",appString,appString2,appstring3);12:字符串的查找:
//字符串的查詢 NSString *link=@"abcdffe-===fefjfwfw"; NSRange range1=[link rangeOfString:@"abcd"]; NSLog(@"%@",NSStringFromRange(range1)); if(range1.location != NSNotFound){ NSLog(@"found!"); }