• QF——OC字符串


    OC中的字符串:

      C中没有字符串类型,用字符数组和指针代替。

      OC中引入了字符串类型,它包括NSString 和 NSMutableString两种

      NSString是不可变的,已经初始化便不能更改;NSMutableString是可变的,可以对自己进行修改操作的。这类似于Java里的String和BufferString。

    为什么NSString是不可变的,NSMutableString是可变的??

      因为NSString在内存的数据结构是List,它是有序排列,大小固定的;而NSMutableString在内存中的数据结构是链表,它“貌似”是随机分配位置的,然后首尾相指就行了。要给NSMutableString添加了新字符,无论这个新字符被分配到了哪儿,只要它指向最后一个字符就行了。

    NSString字符串的初始化方法:

            //通过对象方法(动态方法)
            NSString * str1 = [[NSString alloc]initWithUTF8String:"wang1"];
            NSString * str2 = [[NSString alloc]initWithString:@"wang2"];
    
            //通过类方法(静态方法)
            NSString * str3 = [NSString stringWithUTF8String:"wang3"];
            NSString *str4  =[NSString stringWithString:"wang4"];

    NSString字符串常用方法:

    //
    //  main.m
    //  NSStringTest
    //
    //  Created by mac on 15-2-25.
    //  Copyright (c) 2015年 mac. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    int main(int argc, const char * argv[])
    {
    
        @autoreleasepool {
            
            NSString *str = @"wang1.avi";
            
            //根据索引获取字符串元素
            UniChar ch = [str characterAtIndex:0];
            NSLog(@"%c",ch);
            
            //字符串内容比较
            BOOL tag = [str isEqualToString:@"wang1.mp4"];
            NSLog(@"%i",tag);
            if (tag==NO)
            {
                NSLog(@"butong");
            }else
            {
                NSLog(@"xiangtong");
            }
            
            //字符串大小比较
            NSComparisonResult ret = [str compare:@"wang2.avi"];
            if(ret==NSOrderedAscending) //wang1.avi到wang2.avi是增序的
            {
                NSLog(@"up");
            }else if(ret==NSOrderedDescending)
            {
                NSLog(@"down");
            }else
            {
                NSLog(@"equal");
            }
            
            //查找子串的范围range(位置,长度)
            NSRange range = [str rangeOfString:@"wang1"];
            NSLog(@"%lu,%lu",range.location,range.length);
            
            //判断前后缀
            BOOL tag1 = [str hasPrefix:@"wang"];
            if (tag1==YES)
            {
                NSLog(@"是以wang为前缀");
            }
           
            BOOL tag2 = [str hasSuffix:@"avi"];
            if (tag2==YES)
            {
                NSLog(@"是以avi为后缀");
            }
            
            
            //数组串转换成数字
            NSString *intStr = @"1031";
            NSString *floatStr = @"3.14";
            int intNum = [intStr intValue];
            float floatNum = [floatStr floatValue];
            NSLog(@"_____________%f",intNum+floatNum);
            NSLog(@"%i,%f",intNum,floatNum);
            
            
            //大小写转换
            NSString *upperStr = [str uppercaseString];   //把wang1.avi转为大写WANG1.AVI
            NSString *lowerStr = [upperStr lowercaseString];  //再把WANG1.AVI转为wang1.avi
        
            //字符串提取(获取子串)
            NSString *subStr1 = [str substringFromIndex:5];  //从索引5开始到结尾
            NSLog(@"%@",subStr1);
            
            NSString *subStr2 = [str substringToIndex:4];  //从开头到索引4
    //        NSRange range1;
    //        range1.location = 5;
    //        range1.length = 4;
            NSRange range1 = NSMakeRange(5, 4);   //注意:从格式就可以看出,NSMakeRange(5,4)并不是方法,它只是宏替换。
            NSString *subStr3 = [str substringWithRange:range1];
            NSLog(@"%@__%@",subStr2,subStr3);
    
            
        }
        
        return 0;
    }

    NSMutableString字符串的常用方法: 

       首先要说的时NSMutableString是继承于NSString的,所以NSString的所有方法都可以用于NSMutableString字符串。但NSMutableString不同之处是,它定义了很多可以最自己进行操作的方法:

    //
    //  main.m
    //  NSMutableString
    //
    //  Created by mac on 15-2-26.
    //  Copyright (c) 2015年 mac. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    int main(int argc, const char * argv[])
    {
    
        @autoreleasepool {
            
            //NSMutableString字符串不能这样创建
    //        NSMutableString * mutStr = @"wanger";
    //        NSMutableString * mutStr = [[NSMutableString alloc]initWithUTF8String:"wanger"];
            
            NSMutableString * mutStr = [NSMutableString stringWithString:@"wang"];
            NSString *str = [NSString stringWithUTF8String:".avi"];
            
            //增(拼接)
            [mutStr appendString:@".avi"];
    //        [mutStr appendFormat:@"%@",str];
            [mutStr insertString:@"er" atIndex:4];
            NSLog(@"%@",mutStr);
            
            //
            NSRange range1 = NSMakeRange(2, 3);
            [mutStr deleteCharactersInRange:range1];
            
            //
            [mutStr setString:@"wangyawen.avi"]; //重置可变字符串内存中的内容
            
            //替换
            NSRange range2 = NSMakeRange(10, 3);
            [mutStr replaceCharactersInRange:range2 withString:@"mp4"];  //替换
            
            NSLog(@"%@",mutStr);
            
        }
        return 0;
    }

    ---恢复内容结束---

  • 相关阅读:
    unity3d 随机生成地形之随机山脉
    unity3d ppsspp模拟器中的post processing shader在unity中使用
    unity3d shader之实时室外光线散射(大气散射)渲染
    Unity3d 游戏中的实时降噪-对Square Enix文档的研究与实现
    Unity3d 获取屏幕depth与normal
    unity3d Hair real time rendering 真实头发实时渲染
    java.net.URL类
    Springboot定时任务
    Base64编码
    ShiroUtil 对密码进行加密
  • 原文地址:https://www.cnblogs.com/wangerxiansheng/p/4301123.html
Copyright © 2020-2023  润新知