OC語言--字符串(NSString& NSMutableString)

首先聲明一下:

OC 中的函數,是全局的,如 NSLog();,它不屬於任何類,不屬於任何一個對象。

OC 中的方法,非全局的,init 方法,用中括號來使用,它屬於類本身,或者屬於對象本身;分爲類方法,和實例方法(對象方法);方法被封裝對象,或類模板當中

1. 不可變字符串NSString

 

1.1 OC字符串和C字符串的不同

OC字符串是對象,佔用堆空間;C 字符串是數據,它佔用棧空間

 

1.2 OC字符串的常見操作

(1) 常用創建方法

//實例方法創建字符串

- (instancetype)initWithString:(NSString *)aString;

- (instancetype)initWithFormat:(NSString *)format, …;

- (instancetype)initWithUTF8String:(const char *)bytes;

 

//用類方法創建字符串

+ (instancetype)stringWithString:(NSString *)aString;

+ (instancetype)stringWithFormat:(NSString *)format,, …;

+ (instancetype)stringWithUTF8String:(const char *)bytes;

 

(2)求字符串長度

- (NSUInteger)length;

 

(3) 通過索引獲取相應的字符

- (unichar)characterAtIndex:(NSUInteger)index;

 

(4) 字符串比較

//判斷兩個字符串是否相等 

- (BOOL)isEqualToString:(NSString *)aString;

 

//比較兩個字符串大小

- (NSComparisonResult)compare:(NSString *)aString;

 

//不區分大小寫比較大小

- (NSComparisonResult)caseInsensitiveCompare:(NSString *)aString;

 

(5) 字符串查找//在給定的字符串中去查找子字符串

- (NSRange)rangeOfString:(NSString *)aString;

 

(6) 判斷前後綴

//前綴字符串

- (BOOL)hasPrefix:(NSString *)aString;

//後綴字符串

- (BOOL)hasSuffix:(NSString *)aString;

 

(7) 數字字符串轉化爲各種數字類型

- (double)doubleValue;

- (float)floatValue;

- (int)intValue;

//long unsigned int

- (NSInteger)integerValue;

- (long long)longLongValue;

- (BOOL)boolValue;  

 

(8) 大小寫轉換

- (NSString *)uppercaseString;//將所有字符轉換成大寫

- (NSString *)lowercaseString;//將所有字符轉換成小寫

- (NSString *)capitalizedString;////將第一個字符轉換成大寫

 

*(9)字符串提取

- (NSString *)substringFromIndex:(NSUInteger)from;

- (NSString *)substringToIndex:(NSUInteger)to;

- (NSString *)substringWithRange:(NSRange)range;

 

*(10) 從本地讀取文件內容

- (id)initWithContentsOfFile:(NSString *)path 

encoding:(NSStringEncoding)enc 

error:(NSError **)error;

 

+ (id)stringWithContentsOfFile:(NSString *)path 

encoding:(NSStringEncoding)enc 

error:(NSError **)error;

 

eg.NSString基本使用

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

  @autoreleasepool {
    NSString* a = [[NSString alloc]initWithString:@"你好嗎,hello"];
    NSString* aa = [NSString stringWithFormat:@"%d %@",20,@"world"];
    NSMutableString* b = [[NSMutableString alloc]initWithString:@"HELLO"];
    unichar myChar = [a characterAtIndex:2];
    
    NSLog(@"The Length:%lu",[a length]);
    NSLog(@"The Length:%lu",[aa length]);
    NSLog(@"The Length:%lu",[b length]);
    
    NSLog(@"The character: %C",myChar);
    
    NSString* aaa = a;
    //判斷是否相同
    if([a isEqualToString:aaa] == YES){
      printf("a isEqualToString aaa\n");
    }else{
      printf("a is different from aaa\n");
    }
    //比較字符串大小
    if([a caseInsensitiveCompare:aa] == NSOrderedSame){
      printf("a equals aaa\n");
    }else if ([a caseInsensitiveCompare:aa] == NSOrderedAscending){
      printf("a less than aaa\n");
    }else{//NSOrderedDescending
      printf("a great than aaa\n");
    }
    
  }
    return 0;
}

 

 

2 可變字符串NSMutableString

 

2.1 什麼是可變字符串

可變字符串對象的內容可以改變

 

2.2 NSMutableString 和NSString 的關係

NSMutableString 繼承於 NSString,

NSString類的所有方法NSMutableString都可以使用

 

2.3 可變字符串常見操作

 

(1) 指定索引插入子串

  - (void)insertString:(NSString *)aString 

atIndex:(NSUInteger)loc;

 

(2) 刪除指定範圍的子串

- (void)deleteCharactersInRange:(NSRange)range;

 

(3) 追加子串

- (void)appendString:(NSString *)aString;

 

(4) 追加格式化子串

- (void)appendFormat:(NSString *)format, ...;

 

(5) 修改子串

- (void)setString:(NSString *)aString;

 

eg.NSMutableString基本使用

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

  @autoreleasepool {
    NSString* a = [[NSString alloc]initWithString:@"HELLO"];
    NSString* sub = [[NSString alloc]initWithString:@"EL"];
    
    NSRange myRange = [a rangeOfString:sub];
    
    printf("myRange.location:%lu\n",myRange.location);
    printf("myRange.length:%lu\n",myRange.length);
    
      //前綴存在判斷
      //NSString* b = [NSString stringWithString:a];
    if ([a hasPrefix:@"HEL"]) {
      printf("has Prefix.\n");
    }else{
      printf("has not Prefix.\n");
    }
    
      //數字字符串轉換成相應的數字類型
    NSString* c = [NSString stringWithUTF8String:"654321"];
    NSLog(@"Number:%d",[c intValue]+100);
      //- (BOOL)boolValue;使用
    NSString* d = [NSString stringWithFormat:@"no"];
    NSLog(@"%s",[d boolValue]?"yes":"no");
      //- (NSString *)uppercaseString;
      //將所有字符轉換成大寫
    NSLog(@"%@",[d uppercaseString]);
      //- (NSString *)lowercaseString;
      //將所有字符轉換成小寫
    NSLog(@"%@",[d lowercaseString]);
      //- (NSString *)capitalizedString;
      //將第一個字符轉換成大寫
    NSLog(@"%@",[d capitalizedString]);
      //-----------------------------
    NSString* longString = [NSString stringWithFormat:@"ABCDEFG1234567890"];
      //   - (NSString *)substringFromIndex:(NSUInteger)from;
    NSLog(@"%@",[longString substringFromIndex:6]);
      //- (NSString *)substringToIndex:(NSUInteger)to;
  //substringToIndex不包含index位置的字符本身
    NSLog(@"%@",[longString substringToIndex:6]);
      //- (NSString *)substringWithRange:(NSRange)range;
    NSRange myRange2 = {5,6};
    myRange2.location = 4;
    myRange2.length = 7;
    NSLog(@"%@",[longString substringWithRange:myRange2]);
    

  }
    return 0;
}

 

發佈了24 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章