[objective-c] 07 - 字符串 集合

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

[代码展示]

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

#import <Foundation/Foundation.h>

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

{

@autoreleasepool

{

int age = 5;

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

NSLog(@"%@", string);

char *p = "abc";

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

NSLog(@"%@", ocString);

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

时间: 2024-10-14 14:12:28

[objective-c] 07 - 字符串 集合的相关文章

学习笔记 07 --- JUC集合

学习笔记 07 --- JUC集合 在讲JUC集合之前我们先总结一下Java的集合框架,主要包含Collection集合和Map类.Collection集合又能够划分为LIst和Set. 1. List的实现类主要有: LinkedList, ArrayList, Vector, Stack. (01) LinkedList是双向链表实现的双端队列:它不是线程安全的.仅仅适用于单线程. (02) ArrayList是数组实现的队列,它是一个动态数组.它也不是线程安全的,仅仅适用于单线程. (03

java字符串集合

一,java的接口跟C语言所能做到的相比确实是让人眼前一亮的东西.利用接口可以将多种东西放到一起,在编程过程中就能省略掉相同类的很多重复代码,将代码进行分类别的,统一的处理. 二,java中的字符串处理,java中的字符串并不像C语言那样利用二维数组来进行操作,而是对应了String这个对象,可以用new的方法创建一个字符串对象,而这个字符串对象有很多方法可以直接调用,这样直接对对象进行操作,显得非常方便. 神奇的字符串操作方法 str.length() str.indexOf(),indexO

给出一个set的字符和一个正数k,求所有由这个set能组成长度为k的字符串集合 print-all-combinations-of-given-length

// 给出一个set的字符和一个正数k,求所有由这个set能组成长度为k的字符串集合 /* Input: set[] = {'a', 'b'}, k = 3 Output: aaa aab aba abb baa bab bba bbb Input: set[] = {'a', 'b', 'c', 'd'}, k = 1 Output: a b c d package recursion; import java.util.ArrayList; public class N_sets_form_

给定一个set字符和一个正数k,找出所有该做set它可以由长度构成k该字符串集合 print-all-combinations-of-given-length

// 给定一个set字符和一个正数k,找出所有该做set它可以由长度构成k该字符串集合 /* Input: set[] = {'a', 'b'}, k = 3 Output: aaa aab aba abb baa bab bba bbb Input: set[] = {'a', 'b', 'c', 'd'}, k = 1 Output: a b c d package recursion; import java.util.ArrayList; public class N_sets_form

字符串集合或字符串数组转换成json数组

字符串可以是List<String>类型的字符串集合,也可以是String[]类型的字符串数组,二者转换成JSON数组的方式没有什么不同.下面代码注意关键的部分即可(画红线部分). 1. List<String>类型的字符串集合转换成JSON数组,如下所示: List<String> shotLst = ecsDao.selectShotInstanceData4Ali(requestShotMap); JSONArray shotrray = JSONArray.fr

PHP字符串 集合的相关函数

PHP第三次字符串处理函数<?php/** * Created by PhpStorm. * User: yangguojun * Date: 16/3/16 * Time: 下午7:26 *///1.去掉空格及特殊字符 trim函数 //$str='asdf ghjkl\t'; //echo($str);//trim 去掉两端空格 //echo(trim($str));//echo('test'); //移除两端指定的字符 as 和 \t//echo(trim($str,'as\t')); /

swift_简单值 | 元祖 | 流程控制 | 字符串 | 集合

//: Playground - noun: a place where people can play import Cocoa var str = "Hello, playground" //这里先提及下, //Swift中的属性的定义 //属性名首字母只能是字母,下划线 //首字母后也只能是数字,字母,下划线 /****************************************常量与变量**/ /**************常量的定义*/ //语法上就是使用let关

字符串集合的合并

将多个集合合并成没有交集的集合.     给定一个字符串的集合,格式如:{aaa bbb ccc}, {bbb ddd},{eee fff},{ggg},{ddd hhh}要求将其中交集不为空的集合合并,要求合并完成后的集合之间无交集,例如上例应输出{aaa bbb ccc ddd hhh},{eee fff}, {ggg}.    (1)请描述你解决这个问题的思路:    (2)请给出主要的处理流程,算法,以及算法的复杂度    (3)请描述可能的改进. 采用并查集.(关于并查集,上篇博文讲了

C# 基础 字符串 集合 文件操作

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApplication4 { class Program { static void Main(string[] args) { //字符串截取(Substring) string stroo = "