[objective-c] 07 - 字符串 数组 字典

 

关于字符串NSString 数组NSArray 字典NSDictionary的学习,本文主要以代码的形式展示了其一些常用的方法,掌握这些方法便可以对字符串 数组 字典有个大致的掌握。

 

[代码展示]

======字符串======

#import <Foundation/Foundation.h>

 

int main(int argc, const char * argv[])

{

    @autoreleasepool

    {

        //1. stringWithFormat

        int age = 5;

        NSString *string = [NSString stringWithFormat:@"我的年龄是%d", age];

        NSLog(@"%@", string);

        

    //2.c字符串转换为oc字符串

        char *p = "abc";

        NSString *ocString = [NSString stringWithCString:p encoding:NSUTF8StringEncoding];

        NSLog(@"%@", ocString);

  

    //3.length        

        NSString *one = @"ddd";

        NSLog(@"%lu", one.length);

        

        NSString *a = @"abc";

        NSString *b = @"abc";

        NSString *c = [NSString stringWithFormat:@"abc"];

        

        if (a == b)  // a和b指向常量池内同一块空间,地址相同 ,比较的不是内容,比较的是地址

        {

            NSLog(@"a == b");

        }

        if (a == c)

        {

            NSLog(@"a == c");

        }

        if ([a isEqualToString:c])

        {

            NSLog(@"a equal c");

        }

        

        

        NSString *d = @"abc";

        NSLog(@"%ld", [d compare:a]);

        

        NSString *fileName = @"iOS_45.doc";

        if ([fileName hasPrefix:@"iOS"])

        {

            NSLog(@"");

        }

        if ([fileName hasSuffix:@".doc"])

        {

            NSLog(@"");

        }

        

        NSRange range = [fileName rangeOfString:@"456"]; // 找不到时

        NSLog(@"%lu, %lu", range.location, range.length);

        

        /*

        NSString *s = [fileName uppercaseString]; // 返回转换后的字符串,不会改变原字符串内容  NSString为不可变字符串

        NSLog(@"%@, %@", fileName, s);

        NSLog(@"%p", fileName);

        

        fileName = [fileName uppercaseString]; // 指向了新的字符串,

        NSLog(@"%@", fileName);

        NSLog(@"%p", fileName);

        

        NSMutableString *mString = [NSMutableString stringWithFormat:@"abcdefghijklmnopqrstuvwxyz"];

//        NSMutableString *mm = [NSMutableString stringWithCapacity:10]; // 容量是10,存10个字符串时效率最高

        

        [mString appendString:@"opq"];

        NSLog(@"%@", mString);

        

        [mString insertString:@"ffff" atIndex:3];

        NSLog(@"%@", mString);

        

        NSRange range1 = NSMakeRange(0, 1);

        [mString deleteCharactersInRange:range1]; // 删除

         NSLog(@"%@", mString);

        

        [mString replaceCharactersInRange:range1 withString:@"123"]; // 替换

        NSLog(@"%@", mString);

        

        [mString substringWithRange:range1]; // 截取

         NSLog(@"%@", mString);

        

        // 将不可变String转换成可变字符串

        NSString *name = @"张三";

        NSMutableString *mname = [name mutableCopy];

        [mname replaceCharactersInRange:range1 withString:@"123"]; // 替换

        NSLog(@"%@", mname);

        

        */

        

    }

    return 0;

}

 

======数组======

==Student类的声明==

#import <Foundation/Foundation.h>

 

@interface Student : NSObject

 

@property (strong, nonatomic) NSString *name;

@property (assign, nonatomic) int age;

 

-(instancetype) initStudentWithName:(NSString *)vname Age:(int)vage;

 

-(NSComparisonResult) compare:(Student *) other;

 

@end

 

==Student类的实现==

#import "Student.h"

 

@implementation Student

 

-(instancetype)initStudentWithName:(NSString *)vname Age:(int)vage

{

    if (self = [super init])

    {

        self.name = vname;

        self.age = vage;

    }

    return self;

}

 

-(NSComparisonResult)compare:(Student *)other

{

    return [self.name compare:other.name];

}

 

@end

======main======

#import <Foundation/Foundation.h>

#import "Student.h"

int main(int argc, const char * argv[])

{

    @autoreleasepool

    {

        // 只能存对象,不能存基本数据类型

        

        NSArray *array1 = @[@"one", @"two", @"three"]; // 提倡第一种方式

//        NSArray *array2 = [NSArray arrayWithObjects:@"one", @"two", @"three", nil];

        

        for (int i = 0; i < array1.count; i++)

        {

            NSString *s1 = array1[i];

            NSString *s2 = [array1 objectAtIndex:i];

            NSLog(@"%@, %@", s1, s2);

        }

        

        

//        NSMutableArray 是 NSArray子类

        

//        NSMutableArray *marray1 = [NSMutableArray arrayWithCapacity:10]; // 空的数组

        NSMutableArray *marray2 = [NSMutableArray arrayWithObjects:@"one", @"two", @"three", nil];

        

        // 添加

        [marray2 addObject:@"123"];

        NSLog(@"%@", marray2);

        

        

        // 快速枚举

        for (id sub in marray2)

        {

            NSLog(@"%@", sub);

        }

        NSLog(@"===============");

        

        

        // 删除

        [marray2 removeObjectAtIndex:1];

        for (id sub in marray2)

        {

            NSLog(@"%@", sub);

        }

        NSLog(@"===============");

        

        

        // 替换

        [marray2 replaceObjectAtIndex:1 withObject:@"3"];

        for (id sub in marray2)

        {

            NSLog(@"%@", sub);

        }

        NSLog(@"===============");

        

        // 插入

        [marray2 insertObject:@"1" atIndex:2];

        for (id sub in marray2)

        {

            NSLog(@"%@", sub);

        }

        NSLog(@"===============");

        

        

        

        // 排序

        Student *s1 = [[Student alloc] initStudentWithName:@"张e三" Age:12];

        Student *s2 = [[Student alloc] initStudentWithName:@"李四" Age:15];

        Student *s3 = [[Student alloc] initStudentWithName:@"王五" Age:14];

        

        NSMutableArray *stds = [NSMutableArray arrayWithCapacity:3];

        

        [stds addObject:s1];

        [stds addObject:s2];

        [stds addObject:s3];

        

        

        // 1 通过排序描述对象完成排序

        NSSortDescriptor *desc = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:NO];

        [stds sortUsingDescriptors:@[desc]];

        for (id std in stds)

        {

            NSLog(@"name=%@, age=%d", [std name], [std age]);

        }

        NSLog(@"===============");

        

        

        // 2 通过代码块的方式完成排序

        [stds sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {

            if ([obj1 age] < [obj2 age])

            {

                return -1;

            }

            if ([obj1 age] > [obj2 age])

            {

                return 1;

            }

            return 0;

            

        }];

        for (id std in stds)

                    {

                        NSLog(@"name=%@, age=%d", [std name], [std age]);

                    }

        NSLog(@"===============");

  

        

        

        [stds sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {

            return [[obj1 name] compare:[obj2 name]];

        }];

        for (id std in stds)

        {

            NSLog(@"name=%@, age=%d", [std name], [std age]);

        }

        NSLog(@"===============");

        

        

        // 3 通过对象的排序方法完成排序

        

        [stds sortUsingSelector:@selector(compare:)];

        for (id std in stds)

        {

            NSLog(@"name=%@, age=%d", [std name], [std age]);

        }

        NSLog(@"===============");

    }

    return 0;

}

 

======字典======

#import <Foundation/Foundation.h>

 

int main(int argc, const char * argv[])

{

    @autoreleasepool

    {

        // 字典的使用

        // 包装 将基本的数据类型包装成对象

        NSNumber *num1 = [NSNumber numberWithInt:12];

        NSDictionary *dic = @{@"name":@"张三", @"age":num1};

//        NSDictionary *dic1 = [NSDictionary dictionaryWithObjectsAndKeys:@"张三", @"name", num1, @"age", nil];

     

        

        // 遍历字典

        // 1 得到所有的key

        NSArray *keys = [dic allKeys];

        for (id key in keys)

        {

            id number1 = dic[key]; // 提倡用这种方式

//            id number2 = [dic valueForKey:key];

 

            if ([key isEqualToString:@"name"])

            {

                NSLog(@"%@", (NSString *) number1);

            }

            else

            {

                // 拆箱 获得number对象所存储的基本数据类型

                NSNumber *n = (NSNumber *) number1;

                NSLog(@"%d", [n intValue]);

            }

       

        }

        

        

        // 2 快速枚举 相当于在字典的key中做遍历,得到所有的key

        for (id key in dic)

        {

            NSLog(@"%@", dic[key]);

        }

        

#pragma mark

//        NSMutableDictionary

        

 

        ///

        NSDictionary *s1 = @{@"sid":@"1", @"sname":@"张三", @"sage":@"12", @"sex":@"男"};

        NSDictionary *s2 = @{@"sid":@"2", @"sname":@"李四", @"sage":@"13", @"sex":@"女"};

        NSDictionary *s3 = @{@"sid":@"3", @"sname":@"王五", @"sage":@"13", @"sex":@"男"};

        

        NSMutableArray *array = [NSMutableArray arrayWithCapacity:3];

        

        [array addObject:s1];

        [array addObject:s2];

        [array addObject:s3];

        

        /*

         类 Tool

        

        +(Dictionary *) dictionary for URL :(NSString *) url;

        

        截出字符串

        按某一个符号分割

        +

        */

 

    }

    return 0;

}

 

======运行结果======

张三

12

张三

12

转载于:https://www.cnblogs.com/lqios/p/4288261.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Objective-C中,有多种方法可以进行字符串的拼接。一种常用的方法是使用NSString类提供的方法。你可以使用initWithFormat方法来拼接字符串,例如: ``` NSString *string = [[NSString alloc] initWithFormat:@"%@%@%@", string1, string2, string3]; ``` 这个方法会将string1、string2和string3按照指定的格式进行拼接,并将结果赋值给string变量。另外,你也可以使用stringByAppendingString方法将两个字符串进行拼接,例如: ``` NSString *str = [a stringByAppendingString:b]; ``` 这个方法会将字符串a和字符串b进行拼接,并将结果赋值给str变量。还有一种方法是使用stringByAppendingFormat方法,它可以将格式化字符串和普通字符串进行拼接,例如: ``` NSString *str = [string stringByAppendingFormat:@"%@,%@", a, b]; ``` 这个方法会将字符串a和字符串b按照指定的格式进行拼接,并将结果赋值给str变量。通过这些方法,你可以方便地进行Objective-C字符串的拼接操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Objective-C字符串的拼接方法小结](https://download.csdn.net/download/weixin_38502814/12799885)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Objective-c 字符串的拼接](https://blog.csdn.net/qq_28766327/article/details/51249651)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [objective-C中的字符串拼接](https://blog.csdn.net/chuyouyinghe/article/details/45072461)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值