字符串

这一篇的大部分内容是从LuisX的博客精简而来,欲详细学习可以前往他的博客。

不可变字符串 NSString

创建方法

字面量方法:

NSString *str = @"string";

格式化方法:

NSString *str1 = [NSString stringWithFormat:@"%@",str];

复制方法(不同于copy):

NSString *str2 = [[NSString alloc]initWithString:str];

属性查询方法

名称 属性
长度 length
描述 description
哈希地址 hash

以上属性可以通过get方法获取,亦可发送消息获取。

int length = [str length];
length = str.length;

通过索引获取字符:

unichar ch = [str characterAtIndex:0];

字符串操作

比较字符串大小:

NSComparisonResult result = [str1 compare:str2];

比较过程是从左向右遍历字符串的字符,当字符出现差异时,拥有较大字符的字符串为大,不再向后比较,亦或是当某个字符串遍历结束,尚未结束的字符串为大。

返回值是一个枚举类型

  • NSOrderedAscending(-1)代表str1小于str2。
  • NSOrderedSame(0)代表str1等于str2。
  • NSOrderedDescending(1)代表str1大于str2。

比较条件:

比较时亦可添加条件 列举几个常用

  • NSLiteralSearch(默认)区分大小写
  • NSCaseInsensitiveSearch 不区分大小写
  • NSNumericSearch 比较长度 (它是在比较值的基础上比较长度,就不知道有什么意义。。)

可以同时添加多个条件,也可设定范围。

[str1 compare:str2 options:NSCaseInsensitiveSearch|NSNumericSearch];

[str1 compare:str2 options:NSCaseInsensitiveSearch|NSNumericSearch range:(NSRange){2, 1}];

字符串截取:

//截取指定位置之后的字符串
- (NSString *)substringFromIndex:(NSUInteger)from;
//从0下标开始截取到指定位置的字符串
- (NSString *)substringToIndex:(NSUInteger)to;
//截取指定范围的字符串
- (NSString *)substringWithRange:(NSRange)range;
//截取字符串指定范围的字符
- (void)getCharacters:(unichar *)buffer range:(NSRange)range;

字符串拼接:

    NSString *string = @"1";
    NSString *appStr = @"2";
    //通过字符串拼接
    NSString *resultStr1 = [string stringByAppendingString:appStr];
    //格式化拼接
    NSString *resultStr2 = [string stringByAppendingFormat:@" + %@", appStr];

其他get方法获取的值

	//基本类型转换
    NSLog(@"double型:        %f", numStr.doubleValue);
    NSLog(@"float型:         %f", numStr.floatValue);
    NSLog(@"int型:           %d", numStr.intValue);
    NSLog(@"NSInteger型:     %ld", numStr.integerValue);
    NSLog(@"long long型:     %lld", numStr.longLongValue);
    NSLog(@"BOOL型:          %d", numStr.boolValue);
    //大小写转换
	NSLog(@"大写:         %@", string.uppercaseString);
    NSLog(@"小写:         %@", string.lowercaseString);
    NSLog(@"首字母大写:    %@", string.capitalizedString);

可变字符串 NSMutableString

NSString的子类,区别在于可以初始化后可以修改原来的字符串。

初始化方法

//实例方法
NSMutableString *mutableStr1 = [[NSMutableString alloc] initWithCapacity:20];
//类方法 
NSMutableString *mutableStr2 = [NSMutableString stringWithCapacity:20];

修改方法

    NSMutableString *str = [NSMutableString stringWithString:@"string"];
    
    //插入
    [str insertString:@"123" atIndex:2];
    NSLog(@"%@", str);
    //输出:   st123ring
    
    
    //删除
    [str deleteCharactersInRange:NSMakeRange(2, 2)];
    NSLog(@"%@", str);
    //输出:   st3ring
    
    
    //拼接
    [str appendString:@"456"];
    NSLog(@"%@", str);
    //输出:   st3ring456
    
    
    //格式化拼接
    [str appendFormat:@"7 89"];
    NSLog(@"%@", str);
    //输出:   st3ring4567 89
    
    
    //设置新字符串
    [str setString:@"string"];
    NSLog(@"%@", str);
    //输出:   string

    //字符串替换
    //1.指定范围替换
    [str1 replaceCharactersInRange:NSMakeRange(2, 2) withString:@"123"];
    NSLog(@"%@", str1);
    //输出:   st123ng
    
    
    //2.指定字符串,条件,范围替换
    [str1 replaceOccurrencesOfString:@"123" withString:@"--" options:NSRegularExpressionSearch range:NSMakeRange(0, str1.length)];
    NSLog(@"%@", str1);
    //输出:   st--ng

本篇到此为止,希望这对你有帮助,如果有错误或是有需要补充的地方,望告知。


种一棵树最好的时间是在十年前,而后是现在。

Loading Disqus comments...
Table of Contents