OC_NSString

203 阅读3分钟

NSString

NSString是Foundation框架中一个用来存储和操作字符串的类。

创建方式

NSString *str1 = [NSString new];
NSString *str2 = [[NSString alloc]init];
NSString *str3 = [NSString string];
NSString *str4 = @"String";

NSString常用属性及方法

字符串长度

@property (readonly) NSUInteger length;

  • 只读,获取字符串的长度。
  • 用法:
    str1.length;
    

字符串转数字类型

@property (readonly) double doubleValue;

@property (readonly) float floatValue;

@property (readonly) int intValue;

  • 只读,获取字符串转数字类型。
  • 用法:
    str1.doubleValue;
    str1.floatValue;
    str1.intValue;
    

字符串大小写转换

@property (readonly, copy) NSString *uppercaseString;

@property (readonly, copy) NSString *lowercaseString;

@property (readonly, copy) NSString *capitalizedString;

  • 只读,转换字符串的大小写。
  • 用法:
    str1.uppercaseString;           //大写
    str1.lowercaseString;           //小写
    str1.capitalizedString;         //首字母大写
    

获取对应下标的字符

- (unichar)characterAtIndex:(NSUInteger)index;

  • 根据下标获取字符串中对应位置的字符。
  • 用法:
    [str1 characterAtIndex:2];         //获取字符串str1下标为2的字符
    

字符串截取

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

  • 根据下标获取从下标到字符串末尾的子字符串。
  • 用法:
    [str1 substringFromIndex:2];          //截取从下标为2到字符串末尾的子字符串
    

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

  • 根据下标获取从下标到字符串末尾的子字符串。
  • 用法:
    [str1 substringToIndex:2];          //截取从字符串开头到下标为2的子字符串
    

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

  • 根据NSRange获取子字符串。
  • 用法:
    NSRange range = NSMakeRange(1,2);       
    [str1 substringWithRange:range];    //截取从下标为 1 开始的两位字符串
    

字符串比较

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

  • 比较两个字符串的值是否相同。
  • 用法:
    [str1 isEqualToString:str2];        //比较 str1 与 str2 的值是否相同
    

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

  • 根据字符串的ASKII码比较两个字符串的值的大小。
  • 用法:
    [str1 compare:str2];
    //比较 str1 和 str2 的大小,str1 大返回 1 ,str2 大返回 -1 ,一样大返回0
    

前后缀判断

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

  • 判断是否有指定前缀。
  • 用法:
    [str1 hasPrefix:@"str"];            //判断 str1 是否有内容为"str"的前缀
    

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

  • 判断是否有指定后缀。
  • 用法:
    [str1 hasSuffix:@"str"];            //判断 str1 是否有内容为"str"的后缀
    

C语言字符串转换为NSString

+ (instancetype)stringWithUTF8String:(NSString *)string;

  • 将C语言类型的字符串转换为NSString。
  • 用法:
    char a[10] = "str";
    NSString *str = [NSString stringWithUTF8String:a];
    

拼接创建字符串

+ (instancetype)stringWithFormat:(NSString *)format, ...

  • 将字符串按需要拼接。
  • 用法:
    NSString *str1 = @"AAA";
    NSString *str2 = @"BBB";
    NSString *str = [NSString stringWithFormat:@"%@strstr%@",str1,str2];
    // str 为 "AAAstrstrBBB"
    

字符串转NSArray

- (NSArray<NSString *> *)componentsSeparatedByString:(NSString *)separator;

  • 将字符串以指定字符串分割并返回一个数组。
  • 用法:
    NSArray  *array = [str componentsSeparatedByString:@","]   
    //把字符串 str 根据 "," 分割并返回一个字符串
    

其他

  • %p:打印指针变量的值即地址。
  • %@: 打印指针指向的对象。
  • == 比较字符串仅仅比较的是地址是否相同,比较字符串的值是否相同需要使用isEqualToString进行比较。

NSMutableString

NSMutableString是Foundation框架中的可变字符串类,与NSString不同的是,NSMutableString被修改时不会像NSString重新创建一个对象并修改指针,而是修改字符串时,直接修改对象的内容。NSMutableString继承自NSString,并对NSString进行了扩展,同样用来存储字符串。

创建方式

NSMutableString *str1 = [[NSMutableString alloc]init];
NSMutableString *str2 = [NSMutableString string];

NSMutableString不能像NSString一样直接使用赋值。

NSMutableString常用方法

NSMutableString转NSString

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

  • NSMutableString转换为NSString
  • 用法:
    NSString *str2 = [NSMutableString stringWithString:str1];
    

追加字符串

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

  • 在字符串后追加字符串。
  • 用法:
    [str1 appendString:@"str"];
    

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

  • 在字符串后追加一个拼接的字符串。
  • 用法:
    [str1 appendFormat:@"str%@",str2];
    

NSMutableString的使用场景

当需要大量拼接字符串的时候,需要使用NSMutablString,保证每次拼接都是操作一个对象,不会重复创建多个对象,效率较高。