NSString的幾種常用方法

沒事整理一下NSString的幾種常用方法,便于后期查詢使用。

1.創建NSString字符串

  • NSString 與 char* 最大的區別就是 NSString是一個objective對象,而char* 是一個字節數組。
    @+" 字符串 " 這個符號為objective-c NSString 字符串常量的標準用法,char* 創建的時候 無需添加@
- (void)viewDidLoad
{
    [super viewDidLoad];
    
    //經典的字符串賦值
    NSString *str0 = @"my name is justcoding !";
    
    //字符串格式化合并分別包括
    //NSString*類型 int類型 char*類型 
    NSString *str1 = [NSString stringWithFormat:@"我的名字:%@ 我的年齡:%d 我的郵箱:%s",@"justcoding", 25,"justcoding@gmail.com"];
    
    //字符串賦值 參數中只可以寫一個字符串 和第一種很像
    NSString *str2 = [NSString stringWithString:@"我是字符串"];
   
    //字符串轉換為utf-8格式 參數為char*類型
    NSString *str3 = [NSString stringWithUTF8String:"字符串轉換utf-8格式"];
    
    
    //字符串合并
    int i  = 100;
    char*c = "xuanyusong";
    NSString *temp = @"我是臨時字符串";
    
    //在字符串temp的基礎繼續添加 int i 與 char* c 組成一個新的字符串
    NSString *str4 = [temp stringByAppendingFormat:@"整型: %d 字符型 :%s",i,c];
    
    //在字符串temp的基礎繼續添加temp 并組成一個新的字符串
    NSString *str5 = [temp stringByAppendingString:temp]; 
    
    //字符串輸出
    NSLog(@"str0 = %@", str0);
    NSLog(@"str1 = %@", str1);
    NSLog(@"str2 = %@", str2);
    NSLog(@"str3 = %@", str3);
    NSLog(@"str4 = %@", str4);
    NSLog(@"str5 = %@", str5);
    
}

2.字符串的遍歷

  • 每一個字符串其實是由若干個char字符組成,字符串的遍歷實際上就是將字符串中的每一個字符提取出來。
 - (void)viewDidLoad {
    [super viewDidLoad];
    
    //經典的字符串賦值
    NSString *str = @"YUSONGMOMO";
    
    //字符串的長度
    int count = [str length];
    
    NSLog(@"字符串的長度是%d",count);
    
    //遍歷字符串中的每一個字符
    for(int i =0; i < count; i++)
    {
        char c = [str characterAtIndex:i];
        NSLog(@"字符串第 %d 位為 %c",i,c);
    }
    
}

3.字符串的比較

  • isEqualToString 比較字符串是否完全相等,大小寫不一樣也無法完全匹配。
  • hasPrefixe 匹配字符串頭
  • haSuffix 匹配字符串的尾巴
- (void)viewDidLoad {
    [super viewDidLoad];
    
    NSString *str0 = @"justcoding";
    NSString *str1 = @"justcoding";
    
    //字符串完全相等比較
    if([str0 isEqualToString:str1])
    {
        NSLog(@"字符串完全相等");
    }
    
    //字符串以開頭比較
    if([str0 hasPrefix:@"just"])
    {
        NSLog(@"字符串str0以just開頭");
    }
    
    //字符串以結尾比較
    if([str1 hasSuffix:@"coding"])
    {
        NSLog(@"str1字符串以coding結尾");
    }
}
//isEqualToString方法    
NSString *astring01 = @"This is a String!";
NSString *astring02 = @"This is a String!";
BOOL result = [astring01 isEqualToString:astring02];
NSLog(@"result:%d",result);
//NSOrderedSame 判斷兩者內容是否相同  
//compare方法(comparer返回的三種值)    
NSString *astring01 = @"This is a String!";
NSString *astring02 = @"This is a String!";    
BOOL result = [astring01 compare:astring02] = = NSOrderedSame;    
NSLog(@"result:%d",result);    
* //NSOrderedAscending 判斷兩對象值的大小(按字母順序進行比較,astring02大于astring01為真)  
NSString *astring01 = @"This is a String!";
NSString *astring02 = @"this is a String!";
BOOL result = [astring01 compare:astring02] = = NSOrderedAscending;    
NSLog(@"result:%d",result);
//NSOrderedDescending 判斷兩對象值的大小(按字母順序進行比較,astring02小于astring01為真)
NSString *astring01 = @"this is a String!";
NSString *astring02 = @"This is a String!";
BOOL result = [astring01 compare:astring02] = = NSOrderedDescending;    
NSLog(@"result:%d",result);    
//NSOrderedDescending 判斷兩對象值的大小(按字母順序進行比較,astring02小于astring01為真)
//不考慮大 小寫比較字符串1  
NSString *astring01 = @"this is a String!";  
NSString *astring02 = @"This is a String!";  
BOOL result = [astring01 caseInsensitiveCompare:astring02] = = NSOrderedSame;      
NSLog(@"result:%d",result);      
//NSOrderedDescending判斷兩對象值的大小(按字母順序進行比較,astring02小于astring01為 真)  
//不考慮大小寫比較字符串1
NSString *astring01 = @"this is a String!";
NSString *astring02 = @"This is a String!";
BOOL result = [astring01 caseInsensitiveCompare:astring02] = = NSOrderedSame;    
NSLog(@"result:%d",result);    
//NSOrderedDescending判斷兩對象值的大小(按字母順序進行比較,astring02小于astring01為 真)
//不考慮大小寫比較字符串2  
NSString *astring01 = @"this is a String!";  
NSString *astring02 = @"This is a String!";  
BOOL result = [astring01 compare:astring02 options:NSCaseInsensitiveSearch | NSNumericSearch] = = NSOrderedSame;      
NSLog(@"result:%d",result); 
// NSCaseInsensitiveSearch:不區分大小寫比較 NSLiteralSearch:進行完全比較,區分大小寫 NSNumericSearch:比較字符串的字符個數,而不是字符值。  
//不考慮大小寫比較字符串2
NSString *astring01 = @"this is a String!";
NSString *astring02 = @"This is a String!";
BOOL result = [astring01 compare:astring02 options:NSCaseInsensitiveSearch | NSNumericSearch] = = NSOrderedSame;    
NSLog(@"result:%d",result);    
// NSCaseInsensitiveSearch:不區分大小寫比較 NSLiteralSearch:進行完全比較,區分大小寫 NSNumericSearch:比較字符串的字符個數,而不是字符值。
判斷的方法可以利用 NSString 類別中 caseInsensitiveCompare: 所回傳 -1、0 或是 1 的數值,判定兩個字串之間得排序關系,其程式瑪如下。
NSString *string = @"0";  
 NSComparisonResult result = [string caseInsensitiveCompare:@"A"];  
 switch (result) {  
   case NSOrderedAscending:  
           NSLog(@"升冪");  
           break;  
   case NSOrderedSame:  
           NSLog(@"忽略大小寫相同的字串");  
           break;  
   case NSOrderedDescending:  
           NSLog(@"降冪");  
           break;  
   default:  
           NSLog(@"無法判定");  
           break; 
 }

4. 文件字符串操作(讀寫)

//從文件讀取字符串:initWithContentsOfFile方法  
NSString *path = @"astring.text";  
NSString *astring = [[NSString alloc] initWithContentsOfFile:path];  
NSLog(@"astring:%@",astring);  
//寫字符串到文件:writeToFile方法
NSString *astring = [[NSString alloc] initWithString:@"This is a String!"];
NSLog(@"astring:%@",astring);
NSString *path = @"astring.text";    
[astring writeToFile: path atomically: YES];
//擴展路徑
NSString *Path = @"~/NSData.txt";
NSString *absolutePath = [Path stringByExpandingTildeInPath];
NSLog(@"absolutePath:%@",absolutePath);
NSLog(@"Path:%@",[absolutePath stringByAbbreviatingWithTildeInPath]);
//文件擴展名
NSString *Path = @"~/NSData.txt";
NSLog(@"Extension:%@",[Path pathExtension]);

5. 字符串的截取和大小寫

//改變字符串的大小寫
NSString *string1 = @"A String";
NSString *string2 = @"String";
NSLog(@"string1:%@",[string1 uppercaseString]);//大寫
NSLog(@"string2:%@",[string2 lowercaseString]);//小寫
NSLog(@"string2:%@",[string2 capitalizedString]);//首字母大小
- (void)viewDidLoad
{
    [super viewDidLoad];
    
    NSString *str0 = @"中文my name is xuanyusong";
    
    //截取字符串起始點到index為4之間的內容
    NSString * to = [str0 substringToIndex:4];
    
    NSLog(@"to = %@",to);
    
    //截取字符index為2 到結尾之間的內容
    NSString * from = [str0 substringFromIndex:2];
    
    NSLog(@"from = %@",from);
       
    //設置截取字符串的范圍 
    //從第二位開始,長度為十
    NSRange rang = NSMakeRange(2, 10);
    NSString * strRang = [str0 substringWithRange:rang];
    NSLog(@"rang = %@",strRang);
    
    //設置字符串首字母大寫
    NSLog(@"str0首字母大寫:%@",[str0 capitalizedString]);
    //設置字符串全部內容為大寫
    NSLog(@"str0大寫:%@",[str0 uppercaseString]);
    //設置字符全部內容為小寫
    NSLog(@"str0小寫:%@",[str0 lowercaseString]);
    
}

6.搜索字符串與替換字符串

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    NSString *str0 = @"中文my name is xuanyusong";
    NSString *temp = @"is";
    NSRange rang = [str0 rangeOfString:temp];
    
    NSLog(@"搜索的字符串在str0中起始點的index 為 %d", rang.location);
    NSLog(@"搜索的字符串在str0中結束點的index 為 %d", rang.location + rang.length);
    
    //將搜索中的字符串替換成為一個新的字符串
    NSString *str = [str0 stringByReplacingCharactersInRange:rang withString:@"哇咔咔卡卡咔"]; 
    NSLog(@"替換后字符串為%@", str);

   //將字符串中" " 全部替換成 *
    str = [str0 stringByReplacingOccurrencesOfString :@" " withString:@"@"]; 
    NSLog(@"替換后字符串為%@", str);
    
  }

拓展:使用下面這個方法整體替換字符串還可以設置替換的區域。

 stringByReplacingOccurrencesOfString:(NSString *)withString:(NSString *) options:(NSStringCompareOptions) range:(NSRange)

7.字符串尾部添加

  • 使用alloc在內存中創建字符串對象后邊可以動態的操作這個字符串,修改與添加等。
  • appendstring 方法:向字符串尾部添加一個字符串。
  • appendFormat方法:向字符串尾部添加多個類型的字符串,可以添加任意數量與類型的字符串。
- (void)viewDidLoad
{
    [super viewDidLoad];
   
    NSMutableString * str = [[NSMutableString alloc] init];
    
    //添加普通的字符串
    [str appendString:@"aaa"];
    
    //添加字符串 整型 字符型
    [str appendFormat:@"我的名字:%@ 我的年齡:%d 我的郵箱:%s",@"justcoding", 25,"justcoding@gmail.com"];
   
    NSLog(@"str = %@",str);
    
}

8. 字符串中刪除元素

  • stringWithString 方法:用于創建字符串初始化賦值
  • rangeOfString方法:傳入字符串返回一個在該字符串中的范圍 也可以寫 NSMakeRange(0, 3) 意思是范圍在字符串0位到第3位
  • deleteCharactersInRange:刪除字符串 參數為Range 就是刪除的范圍。
- (void)viewDidLoad
{
    [super viewDidLoad];
    
    //創建字符串
    NSMutableString *str = [NSMutableString stringWithString:@"justcoding is best!"];
    
    //刪除字符串中含"justcoding"的字符
    [str deleteCharactersInRange: [str rangeOfString: @"justcoding"]];    
    
    NSLog(@"str = %@",str);
    
}

9. 字符串插入

  • stringWithString 方法:用于創建字符串初始化賦值
  • insertString方法:第一個參數 插入的字符串對象, 第二個參數 插入的位置。
- (void)viewDidLoad
{
    [super viewDidLoad];
    
    //創建字符串
    NSMutableString *str = [NSMutableString stringWithString:@"justcoding is"];
    
    //在str第10位插入字符串
    [str insertString:@"best man" atIndex:10];
    
    NSLog(@"str = %@",str);
    
}

10. 字符串拷貝

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    //創建字符串
    NSMutableString *str1 = [NSMutableString stringWithString: @"字符串1"];
    NSMutableString *str2;
    
    //字符串賦值
    str2 = str1;
    
    [str2 appendString: @" 和字符串2"];
    
    NSLog (@"str1 = %@", str1);
    
    NSLog (@"str2 = %@", str2);    
}

PS: 為什么給str2添加數據后 str1的數據也改變了?這就是指針的魅力所在,因為我們操作的是指針,str2 = str1 意思是兩個指針同時指向一塊內存,那么str2指向的內存內容改變以后str1當然跟著改變了。

11. 字符串與指定類型轉換

  • 如果轉換的參數非法的話不會拋出異常,好比用中文去轉整型。不會報錯 但是轉換結果為 0 ,默認值。
- (void)viewDidLoad
{
    [super viewDidLoad];
    
    //字符串轉整型
    NSString *str0 = @"1121";
    //NSString *str0 = @"中國";
    
    //把字符串強轉成整型
    int i = [str0 intValue];
    
    NSLog (@"轉換后:%i", i); 
    
    //字符串轉interger
      NSString *str1 = @"1985";
    // NSString *str1 = @"中國";
    
    //把字符串強轉成interger
    NSInteger ii = [str1 integerValue];
    
    NSLog (@"轉換后:%i", ii); 
    
    
    //字符串轉double
    NSString *str2 = @"3.145926";
    //NSString *str2 = @"中國";
    
    //把字符串強轉成double
    double d = [str2 doubleValue];
    
    NSLog (@"轉換后:%f", d); 
    
    //字符串轉float
    NSString *str3 = @"3.145926";
     //NSString *str3 = @"中國";
    //把字符串強轉成float
    double f = [str3 floatValue];
    
    NSLog (@"轉換后:%f", f); 
    
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Objective-C 中核心處理字符串的類是 NSString 與 NSMutableString ,這兩個類最...
    家振要翻天閱讀 1,550評論 0 0
  • 1.創建NSString字符串NSString 與 char* 最大的區別就是 NSString是一個object...
    舒耀閱讀 1,022評論 0 3
  • ———————————————回答好下面的足夠了---------------------------------...
    恒愛DE問候閱讀 1,759評論 0 4
  • Lua 編程語言流程控制語句通過程序設定一個或多個條件語句來設定。在條件為 true 時執行指定程序代碼,在條件為...
    誰說我是小小云閱讀 452評論 0 0
  • 作者:王奕 如果依靠外在的力量贏得幸福 這樣的人生有什么意義? 我追求的幸福 需要用自己的雙手去耕耘 去收獲
    琥珀王奕閱讀 194評論 0 1