美文网首页程序员Objective-c
Objective-C中字符串的那些事

Objective-C中字符串的那些事

作者: 文艺小年青 | 来源:发表于2017-07-29 10:36 被阅读0次

    Objective-C 中处理字符串的两个核心类是 NSString 与 NSMutableString ,这两个类最大的区别就是NSString 创建赋值以后该字符串的内容与长度不能再动态的更改,只能给这个字符串重新赋值。而NSMutableString(可变字符串)创建赋值以后可以动态在该字符串上更改内容与长度。

    普通字符串

    //这种创建方式会在堆区开辟空间并储存。
    NSString *str = [[NSString alloc] initWithFormat:@"我今年%d岁了",18];
    NSString *name1 = [NSString stringWithFormat:@"小明"];
    //下面的是字符串的字面量形式(更直观),方便程序员书写,也叫语法糖
    NSString *name2 = @"小明";
    //读取字符串的长度
    NSInteger length = name2.length;
    //获取字符串中的字符
    unichar c = [name1 characterAtIndex:0];
    NSLog(@"----%c",c);
    

    上面的代码中,name1是创建在堆区,name2是创建在常量区,他们两个的指针地址不同,所以如果我们要判断两个字符串的内容是否相同可以用isEqualToString方法。

    if ([name1 isEqualToString:name2]) {
            NSLog(@"字符串内容相同");
        }else {
            NSLog(@"字符串内容不同");
        }
    
    if语句的输出
    **字符串的比较**
    //如果前面大于后面输出1,如果前面小于后面输出-1,如果相等输出0;
        NSComparisonResult compareResult = [@"a" compare:@"abc"];
    **字符串的截取**
    //从索引值为1的位置截取字符串,(包含1的位置),一直截到最后,
        NSString *substring = [@"abcdefg" substringFromIndex:1];
    //从字符串开始截取到下标为1的元素(不包括下标位置的元素)
        NSString *substring1 = [@"abcdefg" substringToIndex:1];
    //截取某一段字符串(range代表一个范围,location代表截取的开始位置,length代表截取的长度);
        NSString *substring2 = [@"abcdefg" substringWithRange:NSMakeRange(1, 2)];
    
    字符串的截取.png
    **字符串的拼接**
    //在原有的字符串后面追加一个字符串
        NSString *appendString = [@"abc" stringByAppendingString:@"def"];
    //在原有的字符串后面追加数字
    NSString *appendString1 = [@"abc" stringByAppendingFormat:@"%d",123];
    **字符串的替换**
    //方法一:
    NSString *contentString = @"hi,小明";
    //获取’小明‘在contentString中所占的范围
    NSRange range = [contentString rangeOfString:@"小明"];
    if (range.length != 0) {
            //替换该范围的字符串为@“小红”
            NSString *replaceString = [@"hi,小明" stringByReplacingCharactersInRange:range withString:@"小红"];
            NSLog(@"%@",replaceString);
        }
    
    //方法二:
    //全部替换,即将字符串内的所有的小明都替换成小红
    NSString *replaceString1 = [contentString stringByReplacingOccurrencesOfString:@"小明" withString:@"小红"];
    

    字符串的转换:

    //字符串类型转换成int类型
    NSInteger number = [@"123" intValue];
    number = number + 1;
    //其他数据类型转换字符串
    NSString *other = [NSString stringWithFormat:@"%ld",number];
    //把小写的字符串转换成大写
    NSString *uppercaseString = [@"abc" uppercaseString];
    //把上一句大写的字符串转换成小写
    NSString *lowercaseString = [uppercaseString lowercaseString];
    //将首字母大写(按单词分,每一个单词的首字母大写,其他字母都小写。)
    NSString *capitalizedString = [@"i love you" capitalizedString];
    
    字符串的替换.png

    字符串前缀和后缀的判断:

    //字符串前缀的判断用hasPrefix
    if ([@"abcdef" hasPrefix:@"abc"]) {
            NSLog(@"abc为该字符串前缀");
        }else {
            NSLog(@"abc不是该字符串前缀");
        }
    //字符串后缀的判断用hasSuffix
    if ([@"abcdef" hasSuffix:@"def"]) {
            NSLog(@"abc为该字符串后缀");
        }else {
            NSLog(@"abc不是该字符串后缀");
        }
    
    字符串前缀和后缀的判断.png

    可变字符串

    //在堆区开辟空间创建可变字符串。
    NSMutableString *string1 = [[NSMutableString alloc]initWithString:@"abcdefg"];
    //也可以使用便利构造器创建
    NSMutableString *string2 = [NSMutableString stringWithFormat:@"abcdefg"];
    //在原字符串上直接追加字符串
    [string1 appendString:@"asdf"];
    //在原字符串上直接追加格式化字符串
    [string2 appendFormat:@"%d",123];
    //插入字符串
    //将一个字符串插入到一个索引位置处
    [string1 insertString:@"www." atIndex:0];
    //删除指定位置的字符:1是索引,2是长度
    [string1 deleteCharactersInRange:NSMakeRange(1, 2)];
    
    可变字符串的操作.png

    相关文章

      网友评论

        本文标题:Objective-C中字符串的那些事

        本文链接:https://www.haomeiwen.com/subject/gzyqlxtx.html