牛骨文教育服务平台(让学习变的简单)
博文笔记

iOS 字符串、数组、字典基本操作

创建时间:2015-07-02 投稿人: 浏览次数:1139
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

//    NSNumber
    //创建初始化
    NSNumber *number1 = [NSNumber numberWithInt:100];
    NSNumber *number2 = [[NSNumber alloc] initWithFloat:100.00];
    NSLog(@"number1===%@, number2===%@", number1, number2);

    //还原为基本数据类型
    int numberInt = [number1 intValue];
    float numberFloat = [number2 floatValue];
    NSLog(@"numberInt===%d, numberFloat===%f", numberInt, numberFloat);

    NSLog(@"numberString1====%@, numberString2====%@", [number1 stringValue], [number2 stringValue]);

    //NSString
    //创建一个字符串常量
    NSString *string = @"abc";

    //创建空字符串
    NSString *emptyString = [NSString string];
    NSString *emptyString2 = [[NSString alloc] init];
    NSLog(@"string==%@, emptyString==%@, emptyString2==%@", string, emptyString, emptyString2);

    //快速创建一个字符串
    NSString *aString = [[NSString alloc] initWithFormat:@"快速创建一个字符串"];
    NSString *aString2 = [NSString stringWithFormat:@"快速创建一个字符串"];
    NSLog(@"aString==%@, aString2==%@", aString, aString2);

    //快速创建一个格式化字符串
    NSString *string2 = [NSString stringWithFormat:@"%d.png", 100];
    NSString *string3 = [[NSString alloc] initWithFormat:@"%d.png", 100];

    //判断两个字符串内容是否一样
    BOOL isEqual = [string2 isEqualToString:string3];
    NSLog(@"内容是否一样===%d", isEqual);

    //判断两个字符串对象是否一样
    BOOL isSame = [string2 isEqual:string3];
    NSLog(@"是否为一个对象===%d", isSame);

    //比较字符串的大小
    NSLog(@"比较大小===%ld", [string2 caseInsensitiveCompare:string3]);
    //比较字符串的长度
    NSLog(@"字符串长度:%lu", (unsigned long)[string3 length]);
    //改变字符串的大小写
    NSString *string4 = @"I am A deveLoper";
    NSLog(@"字母全部大写———%@,字母全部小写———%@, 单词首字母大写——————%@", [string4 uppercaseString], [string4 lowercaseString], [string4 capitalizedString]);
    //字符串转化为基本数据类型
    NSString *string5 = @"2.76540";
    NSLog(@"%d", [string5 boolValue]);
    NSLog(@"%d", [string5 intValue]);
    NSLog(@"%f", [string5 floatValue]);
    NSLog(@"%f", [string5 doubleValue]);
    NSLog(@"%lld", [string5 longLongValue]);

    //将字符串转化为数组 用指定字符串将字符串分割为多个元素 返回一个数组
    NSArray *stringArray = [string4 componentsSeparatedByString:@" "];
    NSLog(@"字符串分割后的数组===%@", stringArray);
    //用指定的字符串将数组中的元素连接起来 返回一个字符串
    NSString *arrayString = [stringArray componentsJoinedByString:@"#"];
    NSLog(@"数组合并后的字符串===%@", arrayString);
    //从索引为4的字符开始截取至末尾(包含索引为4的字符)
    NSString *subString = [string4 substringFromIndex:4];
    //从头截取至索引为4的字符(不包含索引为4的字符)
    NSString *subString1 = [string4 substringToIndex:4];
    //根据范围来截取  截取从索引为3的字符开始(包含3) 长度为4的一个字符串
    NSRange range;
    range.location = 3;
    range.length = 4;
    NSString *rangeSubString = [string4 substringWithRange:range];
    NSString * temp =[string4 substringWithRange:NSMakeRange(2, 4)];
    NSLog(@"subString==%@, subString1==%@, rangeSubString==%@,temp====%@!", subString, subString1, rangeSubString,temp);
    //拼接字符串
    NSString *formatString = [NSString stringWithFormat:@"%@%@", subString1, subString];
    //返回一个新字符串对象
    NSString *appendString = [subString1 stringByAppendingString:subString];
    NSLog(@"formatString====%@, appendString====%@", formatString, appendString);

    //查询字符串 [A rangeOfString:B]
    NSRange range1 = [appendString rangeOfString:subString1];
    if (range1.location == NSNotFound)
    {
        NSLog(@"====%@", NSStringFromRange([subString1 rangeOfString:appendString]));
    }
    else
    {
        NSLog(@"字符串A 包含 字符串B");
    }

//    NSMutableString 继承于 NSString
    NSMutableString *mutableString = [NSMutableString stringWithString:@"字符串"];
    //插入
    [mutableString insertString:@"可变" atIndex:0];
    NSLog(@"mutableStirng====%@", mutableString);

    //替换
    NSRange range2;
    range2.location = 0;
    range2.length = 4;
    [mutableString replaceCharactersInRange:range2 withString:@"羊肉"];
    NSLog(@"mutableStirng====%@", mutableString);

    //删除
    range2.location = 1;
    range2.length = 1;
    [mutableString deleteCharactersInRange:range2];
    NSLog(@"mutableStirng====%@", mutableString);

//    NSArray 不可变数组
    NSArray *array = [[NSArray alloc] initWithObjects:@"a", @"b", @"c", @"d", @"e", nil];
    NSLog(@"array=====%@", array);

    //不可变数组调用方法添加一个对象 返回一个新数组
    NSArray *addObjectArray = [array arrayByAddingObject:@"f"];
    NSLog(@"addObjectArray=====%@", addObjectArray);

    //数组中是否包含某对象
    if ([addObjectArray containsObject:@"f"])
    {
        NSLog(@"数组中包含元素‘f’");
    }

    //查询指定对象在数组中的索引 如果没有此元素 返回NSNotFound
    NSInteger index = [addObjectArray indexOfObject:@"f"];
    NSInteger index1 = [addObjectArray indexOfObject:@"z"];
    NSLog(@"index====%d, index1====%d", index, index1);

    //获取数组中最后一个元素
    [addObjectArray lastObject];
    //获取数组中第一个元素
    [addObjectArray firstObject];

    //NSMutableArray继承NSArray
    NSMutableArray *mutableArray = [[NSMutableArray alloc] initWithCapacity:10];
    [mutableArray addObject:@"1"];
    NSLog(@"mutableArray=addObject==%@", mutableArray);

    [mutableArray addObjectsFromArray:addObjectArray];
    NSLog(@"mutableArray=addObjectsFromArray==%@", mutableArray);

    [mutableArray insertObject:@"1" atIndex:0];
    NSLog(@"mutableArray=insertObject==%@", mutableArray);

    [mutableArray removeLastObject];
    NSLog(@"mutableArray=removeLastObject==%@", mutableArray);

    [mutableArray removeObject:@"1"];
    NSLog(@"mutableArray=removeObject==%@", mutableArray);

    [mutableArray removeObjectAtIndex:0];
    NSLog(@"mutableArray=removeObjectAtIndex==%@", mutableArray);

    //遍历
    //
    for (int i=0; i<mutableArray.count; i++)
    {
        NSLog(@"遍历1=====%@", [mutableArray objectAtIndex:i]);
    }
    //快速枚举 ps:性能高
    for (NSString *string in mutableArray)
    {
        NSLog(@"遍历2=====%@", string);
    }

    for (id string in mutableArray)
    {
        NSLog(@"遍历3=====%@", string);
    }


    /*
     字典的基本概念 NSDictionary NSMutableDictionary
     字典(NSDictionary,NSMutableDictionary)是由键—值对组成的数据集合。正如我们在词典里查找单词一样。通过Key(键),查找对应Value(值),Key通常是字符串对象,也可以是其他任意类型对象(前提是该对象实现了NSCopying协议)。在一个字典对象中,
     Key的值必须是唯一的;Value可以是任意类型的对象。此外,字典对象的键和值不可以为空(nil),如果需要在一个字典对象中表示空值,可以使用NSNull对象。
     数组
     value       (@"2", @"2", @"1")
     index         0      1     2
     字典
     value      (@"2", @"2", @"1")
     key        @"0"  @"1"  @"2"

     Key:Value, Key:Value

     */

    //NSDictionary初始化
    //初始化一个元素
    NSDictionary *dictionary = [NSDictionary dictionaryWithObject:@"张三" forKey:@"zhangsan"];
    //初始化两个元素
    NSDictionary *dictionary2 = [[NSDictionary alloc] initWithObjectsAndKeys:@"11", @"1", @"22", @"2", nil];
    //根据一个字典进行初始化
    NSDictionary *dictionary3 = [[NSDictionary alloc] initWithDictionary:dictionary2];
    //以文件内容初始化字典
    NSString *path = @"/../.../1.plist";
    NSDictionary *dictionary4 = [[NSDictionary alloc] initWithContentsOfFile:path];

    NSLog(@"____%@", dictionary4);

    /*
     字典常用方法
     */
    //获取字典键值对数量
    int count = [dictionary count];
    NSLog(@"count_____%d", count);
    //通过Key获取对应的Value对象
    NSString *zhangsan = [dictionary objectForKey:@"zhangsan"];
    NSLog(@"zhangsan_____%@", zhangsan);
    //获取所有键的集合
    NSArray *allKeys = [dictionary3 allKeys];
    NSLog(@"keys____%@", allKeys);
    //获取所有值的集合
    NSArray *allValues = [dictionary3 allValues];
    NSLog(@"values____%@", allValues);

    //可变字典  NSMutableDictionary继承于NSDictionary
    //初始化一个空字典
    NSMutableDictionary *mDictionary = [NSMutableDictionary dictionary];
    //向一个字典中添加另外一个字典对象
    [mDictionary addEntriesFromDictionary:dictionary2];
    NSLog(@"添加字典对象mDictionary___%@", mDictionary);
    //向一个字典中新添加键值对
    [mDictionary setObject:@"33" forKey:@"3"];
    [mDictionary setObject:@"44" forKey:@"4"];
    [mDictionary setObject:@"55" forKey:@"5"];
    [mDictionary setObject:@"66" forKey:@"6"];
    [mDictionary setObject:@"77" forKey:@"7"];
    NSLog(@"添加键值对mDictionary___%@", mDictionary);
    //将字典中一个Key对应的值删除
    [mDictionary removeObjectForKey:@"3"];
    NSLog(@"删除一个Key对应的值mDictionary___%@", mDictionary);
    //根据指定的数组(Keys)移除一个字典中的内容
    NSArray *keys = [NSArray arrayWithObjects:@"1", @"2", nil];
    [mDictionary removeObjectsForKeys:keys];
    NSLog(@"指定的数组(Keys)移除mDictionary___%@", mDictionary);

    //移除字典所有对象
    //    [mDictionary removeAllObjects];
    NSLog(@"移除字典所有对象mDictionary___%@", mDictionary);


    /*
     遍历字典  三种
     */
    //快速遍历
    for (id key in mDictionary)
    {
        id object = [mDictionary objectForKey:key];
        NSLog(@"快速遍历____%@", object);
    }

    //普通遍历
    for (int i=0; i<mDictionary.count; i++)
    {
        id key = [[mDictionary allKeys] objectAtIndex:i];
        id object = [mDictionary objectForKey:key];
        id object2 = [[mDictionary allValues] objectAtIndex:i];
        NSLog(@"普通遍历_______%@___%@", object, object2);
    }

    //枚举类型枚举遍历
    NSEnumerator *enumerator = [mDictionary keyEnumerator];
    id key = [enumerator nextObject];
    while (key)
    {
        id object = [mDictionary objectForKey:key];
        NSLog(@"通过枚举类型枚举____%@", object);

        key = [enumerator nextObject];
    }

    //NSSet 集合
    NSSet *set = [NSSet setWithObjects:@"1", @"2", @"3", nil];

    //集合对象个数
    [set count];

    //以数组形式返回集合所有对象
    NSArray *allObjects = [set allObjects];
    NSLog(@"allObjects====%@", allObjects);

    //返回集合中任意一个对象
    [set anyObject];

    //集合中是否包含一个对象 返回BOOL
    [set containsObject:@"2"];

    //两个集合中是否存在有相同元素的对象 返回BOOL  intersetsSet
    NSSet *set1 = [NSSet setWithObjects:@"1", @"2", nil];
    [set intersectsSet:set1];
    NSLog(@"两个集合中是否存在有相同元素的对象=%d", [set intersectsSet:set1]);

    //两个集合中的元素是否完全匹配 返回BOOL  isEqualToSet
    NSLog(@"两个集合中的元素是否完全匹配=%d", [set isEqualToSet:set1]);

    //某集合是否是另一集合的子集 返回BOOL
    NSLog(@"set1是否是set的子集=%d", [set1 isSubsetOfSet:set]);

    //NSMutableSet

    NSMutableSet *mutableSet = [NSMutableSet setWithObjects:@"1", @"2", @"3", @"4", nil];

    //一个集合减去另一个集合的元素
    [mutableSet minusSet:set1];
    NSLog(@"mutableSets=minusSet===%@", mutableSet);

    //集合A与集合B的交集     intersectSet
    [mutableSet intersectsSet:set1];
    NSLog(@"mutableSets=intersectsSet===%d", [mutableSet intersectsSet:set1]);

    //集合A与集合B的并集    unionSet
    [mutableSet unionSet:set1];
    NSLog(@"mutableSets=unionSet===%@", mutableSet
          );
    //将空集合A设置为集合B的内容
    NSMutableSet *emptySet = [NSMutableSet set];
    [emptySet setSet:mutableSet];

//    [emptySet removeAllObjects];
}
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。