標籤:des style blog http java 使用 os strong
holydancer原創,如需轉載,請在顯要位置註明:
轉自holydancer的CSDN專欄,原文地址:http://blog.csdn.net/holydancer/article/details/7343561
objective C中的字串操作
在OC中建立字串時,一般不使用C的方法,因為C將字串作為字元數組,所以在操作時會有很多不方便的地方,在Cocoa中NSString整合的一些方法,可以很方便的操作字串,下面舉幾個例子:
1、建立:
直接利用等號賦值
NSString * [email protected]"我是字串";
stringWithFormat方法
NSString *str2=[NSString stringWithFormat:@"我是參數字串%d,%d",11,111"];
2,合并:
NSString 字串是不可改變的,可以在原字串的基礎上產生新的字串,但是原字串並沒有改變,但是NSString 提供了一個子類:NSMutableString.該類是可變的,NSString可用的方法也同樣適用於NSMutableString,但是使用之前要預先聲明:
NSMutableString *str3 = [NSMutableString stringWithCapacity:50];
需要注意的是,該處聲明時雖然給了50的容量,但是NSMutableString會自動擴充,所以不用擔心給的空間小了。
建立了NSMutableString字串,我們就可以進行合併作業了,常用方法有:
[plain] view plaincopy
- NSMutableString *str3 =[NSMutableString stringWithCapacity:50];
- NSString *[email protected]"NSString 字串";
- [str3 appendString:str4];
- [str3 appendFormat:@"%d",5];
- NSLog(str3);
以上代碼輸出結果為:“NSString字串5”;
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輔助修改字串內容:
[plain] view plaincopy
- #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。
[plain] view plaincopy
- #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:
[plain] view plaincopy
- #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判斷是否以某字串結尾。
[plain] view plaincopy
- #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;
- }
【四】判斷字串為空白並且沒有值(長度為0)
NSString *urlString ="";
if (!urlString&&[urlString length] == 0)
{
NSLog(@”字串為空白或者長度為0”);
}
}
關鍵字:objective-c ,objective c , oc ,字串