您的位置:首页 > 其它

Foundation框架----字符串、数组连载三

2015-07-28 07:55 218 查看
/**********************Foundation框架学习*************************/

       
/******************NSObject********************/
       
NSObject *object1 = [[NSObject
alloc]
init];
       
NSObject *object2 = object1;
       
NSLog(@"obj1: %p", object1);
NSLog(@"obj1: %@",
object1);
NSLog(@"obj2: %p",
object2);
       
//isEqual比较两个指针是否指向同一个对象(指针是否指向同一个内存区域)
BOOL isEqual = [object1
isEqual:object2];
//BOOL isEqual = object1 == object2 ? 1 : 0;
NSLog(@"isEqual is %d",
isEqual);
       
Person *ps = [[Person
alloc]
init];
       
//        [ps test1];
//        SEL sel = @selector(test1);

        //performSelector暴力调用..这种方法用得不多
//        [ps performSelector:sel];
//        [ps performSelector:@selector(test2:) withObject:@300];

        //延迟调用

        [ps performSelector:@selector(test2:)
withObject:@200
afterDelay:2];

       

        //class返回的是当前类(当前对象)的类名,注意:此类名不是一个字符串,它是一个Class类型

        Class class1 = [ps class];

        Class class2 = [NSObject
class];

       

        //superclass返回父类

        Class class3 = [ps superclass];

        Class class4 = [NSObject
superclass];

       

        NSLog(@"class1: %@",
class1);

        NSLog(@"class2: %@",
class2);

        NSLog(@"class3: %@",
class3);

        NSLog(@"class4: %@",
class4);

       

        //判断某个对象是否是当前类名的实例或者是子类的实例

        BOOL isKindeOf = [ps
isKindOfClass:class2];

        NSLog(@"isKindeOf : %d",
isKindeOf);

       

       

        //判断某个对象是否是当前类的实例

        BOOL isMemberOf = [ps
isMemberOfClass:class2];

        NSLog(@"isMemberOf : %d",
isMemberOf);

       

        //某对象是否响应指定的方法

        BOOL respondsToSelector = [ps
respondsToSelector:@selector(test2111:)];

        NSLog(@"respondsToSelector : %d",
respondsToSelector);

       

        //在调用一些特殊的方法的时候,应该先判断一下是否能响应这个方法

        if ([ps
respondsToSelector:@selector(test2111:)])
{

            [ps test2:@10000];

        }

/*********常用类的创建*********/
//alloc创建
NSNumber
*number1 = [[NSNumber
alloc]
initWithInt:100];
//类方法创建
NSNumber
*number2 = [NSNumber
numberWithInt:200];
NSLog(@"两数分别为:%@,
%@", number1, number2);

/*********** NSString ***********/
//创建一个空的字符串
NSString *str1 = [[NSString
alloc]
init];
//用类方法创建一个空的字符串
NSString *str2 = [NSString
string];
NSLog(@"str1 is %@,str2 is %@", str1, str2);
//从键盘直接接收字符串
NSLog(@"输入字符串:");
char*p =
malloc(10);
scanf("%s",p);
NSString *s1 = [NSString
stringWithCString:p
encoding:NSUTF8StringEncoding];
NSLog(@"s1 is %@", s1);
//快速格式化一个字符串,与NSLog用法一致
CGFloat pi =
3.14159;
NSString *s2 = [NSString
stringWithFormat:@"hehe%fhehe",
pi];
NSLog(@"s2 is %@",
s2);
       
NSString *s3 = [[NSString
alloc]
initWithFormat:@"%@akjsahdjf", s2];
NSLog(@"s3 is %@", s3);
//快速创建
NSString
*str1 =
@"这是一个字符串常量";
//alloc创建的字符串
NSString
*str2 = [[NSString
alloc]
initWithString:@"通过alloc创建的字符串"];
//通过格式化符创建
int
a =
100;
NSString
*str3 = [[NSString
alloc]
initWithFormat:@"通过alloc创建,数值是%d",
a ];
//通过格式化符创建
NSString
*str4 = [NSString
stringWithFormat:@"通过类方法创建,数值是%d",
a];
NSLog(@"打印:%@
  %@     %@      %@", str1, str2, str3, str4);
       
/*************字符串比较**************/
NSString
*sr1 = [NSString
stringWithFormat:@"字符串"];
NSString
*sr2 = [NSString
stringWithFormat:@"字符串"];
//比较的是指针地址
if
(sr1 ==sr2) {
    
NSLog(@"sr1 == sr2");
}
//比较字符串内容
BOOL
isSame = [sr1
isEqualToString:sr2];
if
(isSame) {
   
NSLog(@"字符串内容一样为:%@",
sr2);
}
       
/*************比较字符串大小**************/
NSString
*s1 = [NSString
stringWithFormat:@"a"];
NSString
*s2 = [NSString
stringWithFormat:@"b"];
NSComparisonResult
result = [s1
caseInsensitiveCompare:s2];
if
(result ==
NSOrderedAscending) {
    
NSLog(@"升序:%@
< %@", s1, s2);
}else
if
(result == NSOrderedSame){
     NSLog(@"内容相同");
}else
if
(result ==
NSOrderedDescending){
    
NSLog(@"降序:%@
> %@", s1, s2);
}
       
//访问字符串长度
NSString
*s3 =
@"abcd";
int
len = [s3
length];
NSLog(@"%@的长度为%d",
s3, len);
//求字符串的长度
NSUInteger length = s1.length;
NSLog(@"s1.length is %ld", length);
       

       
/*********字符串转换**********/
//大小写转换
NSString
*hello =
@"hello WORLD";
NSLog(@"%@",
[hello
uppercaseString]);//全部大写
NSLog(@"%@",
[hello
lowercaseString]);//全部小写
NSLog(@"%@",
[hello
capitalizedString]);//首字母大写,其他小写
       
//转换为基本数据类型
NSString
*tr1 =
@"10";
int
m = [tr1
intValue];
       
NSString
*tr2 =
@"12.7";
float
n = [tr2
floatValue];
       
NSString
*tr3 =
@"1";
BOOL
t = [tr3
boolValue];
NSLog(@"转换结果为:%d     
%.2f      %d", m, n, t );

//将整型以字符串形式输出
NSString
*str3 = [NSString
stringWithFormat:@"%d", result];
NSLog(@"输出字符串为:%@",
str3);

       
/************截取字符串**************/
//分割字符串
NSString
*str =
@"abcdefghi,jklmnop,qrstuvwxyz";
NSArray
*array = [str
componentsSeparatedByString:@","];
NSLog(@"分割后为%@",
array);
//访问指定位置字符
char
s = [str
characterAtIndex:15];
NSLog(@"s is %c",
s);
//字符串截取
//截取到指定位置
NSString
*new1 = [str
substringToIndex:12];
NSLog(@"new1 is %@",
new1);
//从指定位置截取到末尾
NSString
*new2 = [str
substringFromIndex:19];
NSLog(@"new2 is %@",
new2);
//指定范围截取
NSRange
range =
NSMakeRange(4,
10);
NSString
*new3 = [str
substringWithRange:range];
NSLog(@"new3 is %@",
new3);
       

       

       
/*************拼接字符串***********/
NSString
*r1 =
@"ab";
NSString
*r2 =
@"cd";
NSString
*sr3 = [NSString
stringWithFormat:@"字符串1:%@,

字符串2:%@",
r1, r2];
NSLog(@"sr3 is %@",
sr3);
//拼接
NSString
*sr4 = [r1
stringByAppendingString:r2];
NSLog(@"sr4 is %@",
sr4);
NSString
*sr5 = [r1
stringByAppendingFormat:@"追加字符串2:%@",
r2];
NSLog(@"sr5 is %@",
sr5);
       
       
/**************查找、替换字符串***************/
//查找字符串
NSString
*email =
@"123345@qq.com";
NSString
*substring =
@"qq.com";
//在字符串email中查找substring
NSRange
range1 = [email
rangeOfString:substring];
if
(range1.location
!=
NSNotFound) {
   
NSLog(@"%@包含%@",
email, substring);
   
NSLog(@"位置是:%ld,长度是:%ld",
range1.location, range1.length);
}else{
   
NSLog(@"没找到");
}
//替换字符串
NSString
*newEmail = [email
stringByReplacingOccurrencesOfString:@“qq.com” withString:@"163.com"];
NSLog(@"替换后的newEmail是:%@",
newEmail);

/******************NSArray常用方法************************/
NSString
*s1 =
@"张三";
NSString
*s2 =
@"李思";
NSString
*s3 =
@"王武";
//通过alloc创建
NSArray
*array = [[NSArray
alloc]
initWithObjects:s1,s2,s3,
nil];
//通过类方法创建
NSArray
*array2 = [NSArray
arrayWithObjects:s1,s2,s3,
nil];
//获取下标为0的对象
NSString
*a1 = [array
objectAtIndex:0];
NSLog(@"a1 is %@",
a1);
//数组中的元素个数
NSUInteger
count = [array
count];
NSLog(@"数组中元素个数为%ld",
count);
//判断是否包含某个对象
BOOL
isContain = [array
containsObject:@"zhangsan"];
NSLog(@"是否包含:%d",
isContain);
//对象在数组中的索引位置
NSInteger
index = [array
indexOfObject:@"李思"];
NSLog(@"李思在数组中的索引是:%ld",
index);
//连接数组中的字符串
NSString
*a3 = [array
componentsJoinedByString:@","];
NSLog(@"a3 is %@",
a3);
//最后一个元素
NSString
*a4 = [array
lastObject];
NSLog(@"a4 is %@",
a4);

//创建可变数组,设定5个存储空间,空间可以自动调整
NSMutableArray
*array = [[NSMutableArray
alloc]initWithCapacity:5];
//初始化3个元素装入数组
NSMutableArray
*arry1 = [[NSMutableArray alloc] initWithObjects:s1,s2,s3,
nil];
//添加元素
[array addObject:s1];
//指定位置插入元素
[array
insertObject:@"liu"
atIndex:1];
//替换元素
[array
replaceObjectAtIndex:1
withObject:@"网"];
[array
exchangeObjectAtIndex:1
withObjectAtIndex:2];

//添加元素
//将数组a添加到数组b中
NSArray
*b = [[NSMutableArray
alloc]initWithCapacity:5];
NSArray
*a = [[NSMutableArray
alloc]initWithCapacity:5];
//
       
//删除元素
//删除指定位置元素
[array
removeObjectAtIndex:2];
//删除指定的对象
[array
removeObject:@"张三"];
//删除最后一个元素
[array
removeLastObject];
//删除所有
[array
removeAllObjects];
       
//遍历数组
NSString
*s1 =
@"张三";
NSString
*s2 =
@"张四";
NSString
*s3 =
@"张五";
NSArray
*array3 = [NSArray
arrayWithObjects:s1, s2, s3,
nil];
//普通遍历
for
(int
i =
0; i < [array3
count]; i++) {
    
NSString *str = [array3
objectAtIndex:i];
    
NSLog(@"str is %@", str);
}
//快速遍历
for
(NSString
*str1
in array3) {
    
NSLog(@"%@", str1);
}

//下面这段代码不让程序结束,一直在循环中处理
[[NSRunLoop
currentRunLoop]
run];

例题:
/*
循环录入班里5位同学的成绩,将成绩保存到数组中,然后求5位学生成绩的平均分
*/
NSMutableArray
*score = [[NSMutableArray
alloc]
initWithCapacity:5];
CGFloat
total =
0;
for
(int
i =
1; i <
6; i++) {
   
NSLog(@"请输入第%d个同学的成绩:",
i);
   
char *c =
alloca(9);
   
scanf("%s", c);
   
NSString *a = [NSString
stringWithCString:c
encoding:NSUTF8StringEncoding];
    [score
addObject:a];
    total += [a
floatValue];
}
CGFloat
avg = total / [score
count];
NSLog(@"五位同学的平均成绩为:%.2f",
avg);
       

       
/*
循环录入六个数值放入数组,然后求其中最大值
*/
NSMutableArray
*num = [[NSMutableArray
alloc]
initWithCapacity:6];
CGFloat
max =
0;
for
(int
i =
1; i <
7; i++) {
   
NSLog(@"请输入第%d个数值:",
i);
   
char *c1 =
alloca(9);
   
scanf("%s", c1);
   
NSString *a1 = [NSString
stringWithCString:c1
encoding:NSUTF8StringEncoding];
    [num
addObject:a1];
   
CGFloat m = [a1
floatValue];
   
if (i ==
1) {
        max = m;
    }else{
       
if (m > max) {
           max = m;
        }
    }
}
NSLog(@"最大值是:%.2f",max);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: