在OC中創建字符串時,一般不使用C的方法,因爲C將字符串作爲字符數組,所以在操作時會有很多不方便的地方,在Cocoa中NSString集成的一些方法,可以很方便的操作字符串,下面舉幾個例子:
1、創建:
直接利用等號賦值
NSString * str1=@"我是字符串";
stringWithFormat方法
NSString *str2=[NSString stringWithFormat:@"我是參數字符串%d,%d",11,111"];
2,合併:
NSString 字符串是不可改變的,可以在原字符串的基礎上生成新的字符串,但是原字符串並沒有改變,但是NSString 提供了一個子類:NSMutableString.該類是可變的,NSString可用的方法也同樣適用於NSMutableString,但是使用之前要預先聲明:
NSMutableString *str3 = [NSMutableString stringWithCapacity:50];
需要注意的是,該處聲明時雖然給了50的容量,但是NSMutableString會自動擴充,所以不用擔心給的空間小了。
創建了NSMutableString字符串,我們就可以進行合併操作了,常用方法有:
- NSMutableString *str3 =[NSMutableString stringWithCapacity:50];
- NSString *str4=@"NSString 字符串";
- [str3 appendString:str4];
- [str3 appendFormat:@"%d",5];
- NSLog(str3);
3,刪減:
字符串的刪減,需要用到一個輔助結構體:NSRange;
NSRange的兩個屬性length,location,既可用於圖形輔助,又可用於字符串輔助,在字符串輔助中,表示字符串中的一段範圍,location指起始位置,length指包含字符的個數。創建NSRange的方法有三種:
(一)
NSRange range;
range.location = 10;
range.length = 2;
(二)
NSRange range={10,2};
(三)
NSRange range=NSMakeRange(10,2);//此種方法較爲常用。
下面看段代碼,如何使用NSRange輔助修改字符串內容:
- #import <Foundation/Foundation.h>
- int main(int argc, const char * argv[])
- {
- @autoreleasepool {
- NSMutableString *str=[NSMutableString stringWithCapacity:5];
- [str appendString:@"I am holydancer"];
- //判斷str裏是否有"am",並將其範圍取出。
- NSRange range =[str rangeOfString:@"am"];
- [str deleteCharactersInRange:range];
- NSLog(@"%@,%lu,%lu",str,range.length,range.location);
- }
- return 0;
- }
I holydancer,2,2
4,比較:
(一)是否相等的比較:
和java中某些情況類似,字符串並不能直接用==比較,==比較的是兩個字符串是否是同一個對象,而我們要比較的通常是兩個字符串是否相等,這時應該使用isEqualToString,而不是用==比較其指針值。isEqualToString的返回值是BOOL類型,爲YES和NO。
- #import <Foundation/Foundation.h>
- int main(int argc, const char * argv[])
- {
- @autoreleasepool {
- NSString *str1 = @"holydancer";
- NSString *str2 = @"holydancer";
- if([str1 isEqualToString:str2])
- {
- NSLog(@"字符串內容相等");
- }
- }
- return 0;
- }
字符串根據排列順序的不同,會有大小的差異,如果我們要比較兩個字符串的大小的話,可以使用compare方法。compare 方法返回的結果有三種:NSOrderedAscending,NSOrderedSame,NSOrderedDescending,另外,在使用compare方法時可以添加參數來決定是否區分大小寫,或者聲明爲比較字符串個數而不是字符值等比較條件。
具體使用看如下DEMO:
- #import <Foundation/Foundation.h>
- int main(int argc, const char * argv[])
- {
- @autoreleasepool {
- NSString *str1 = @"holydancer";
- NSString *str2 = @"dancerholy";
- NSComparisonResult result1 =[str1 compare:str2];
- if (result1==NSOrderedSame) {
- NSLog(@"相等");
- }else if (result1 == NSOrderedAscending) {
- NSLog(@"str1小於str2");
- }else {
- NSLog(@"str1大於str2");
- }
- }
- return 0;
- }
如果要忽略大小寫的話,可以在options 裏面加一個參數NSCaseInsensitiveSearch;具體如下
NSComparisonResult result2 =[str1 compare:str2 options:NSCaseInsensitiveSearch];
和NSCaseInsensitiveSearch對應的條件還有NSLiteralSearch(區分大小寫),NSNumericSearch(按字符個數比較),並可以使用"|"來同時滿足多個條件。
(三)判斷字符串的開頭和結尾
hasPrefix方法判斷是否以某字符串開頭,hasSuffix判斷是否以某字符串結尾。
- #import <Foundation/Foundation.h>
- int main(int argc, const char * argv[])
- {
- @autoreleasepool {
- NSString *str1 = @"holydancer";
- if ([str1 hasPrefix:@"holy"]) {
- NSLog(@"str1以holy開頭");
- }
- if ([str1 hasSuffix:@"dancer"]) {
- NSLog(@"str1以dancer結尾");
- }
- }
- return 0;
- }
關鍵字:objective-c ,objective c , oc ,字符串