黑马程序员-OC练习作业

  • 题目要求

    1.求字符串“158”和“39”按十进制数值做差后的结果以字符串形式输出

    2.取出符串“123-456-789-000”中的数字部分,组成一个新的字符串输出

    3.实现函数NSString * stringWithoutNum(NSString *str);删除字符串str的所有数字

    4.实现函数:NSArray *kickOff10(NSArray *array);将数组中的@10去掉

    5.将2013年05月05日转换为2013-05-05

  • 第一题
    1 #import <Foundation/Foundation.h>
    2 
    3 int main(){
    4     // 将字符串转换成int类型
    5     int a1 = [@"158" intValue];
    6     int a2 = [@"39" intValue];
    7     NSLog(@"%d", a1 - a2);
    8     return 0;
    9 }
  • 第二题
     1 #import <Foundation/Foundation.h>
     2 
     3 int main(){
     4     // 第一种方法:将字符串分割成数组,然后将数组每个元素拼接起来
     5     NSArray *array = [@"123-456-789-000" componentsSeparatedByString:@"-"];
     6     NSString *string1 = @""; // 新字符串
     7     for (NSString *s1 in array) {
     8         string1 = [string1 stringByAppendingString:s1];
     9     }
    10     NSLog(@"%@", string1);
    11     // 第二种方法:创建可变字符串查找中划线并删除
    12     NSMutableString *string2 = [NSMutableString stringWithFormat:@"123-456-789-000"];
    13     for (int i = 0; i <3; i++) {
    14         NSRange range = [string2 rangeOfString:@"-"];
    15         [string2 deleteCharactersInRange:range];
    16     }
    17     NSLog(@"%@", string2);
    18     // 第三种方法:创建空可变字符串,将分割后的数组元素依次添加到可变字符串中
    19     NSMutableString *string3 = [[NSMutableString alloc] initWithString:@""];
    20     NSArray *array1 = [@"123-456-789-000" componentsSeparatedByString:@"-"];
    21     for (NSString *str in array1) {
    22         [string3 appendString:str];
    23     }
    24     NSLog(@"%@", string3);
    25     return 0;
    26 }
  • 第三题(刚看题目的时候我在想,函数的参数是不可变的字符串,能删除么?)
     1 #import <Foundation/Foundation.h>
     2 
     3 NSString *stringWithoutNum(NSString *str){
     4     // 将不可变字符串赋值给字符串
     5     NSMutableString *string = [[NSMutableString alloc] initWithString:str];
     6     // 获取字符串的长度
     7     NSInteger length = string.length;
     8     // 遍历字符串每个字符
     9     for (int i = 0; i < length; i++) {
    10         // 获取单个字符
    11         const char c = [string characterAtIndex:i];
    12         if ( c >= '0'&&c <= '9') {
    13             // 将对应位置数字字符删除
    14             [string deleteCharactersInRange:NSMakeRange(i, 1)];
    15             // 删除掉一个字符数字,可变字符串长度和i的值减1
    16             length -= 1;
    17             i -= 1;
    18         }
    19     }
    20     return string;
    21 }
    22 
    23 int main(){
    24     NSLog(@"%@", stringWithoutNum(@"Iam234abad98z209h311man66"));
    25     return 0;
    26 }
  • 第四题(跟第三题一样,不可变的数组能去掉某些特殊的对象么?)
     1 #import <Foundation/Foundation.h>
     2 
     3 NSArray *kickOff10(NSArray *array){
     4     // 将不可变数组赋值给可变数组
     5     NSMutableArray *mutableArray = [NSMutableArray arrayWithArray:array];
     6     // 遍历可变数组
     7     for (int i = 0; i < mutableArray.count; i++) {
     8         // 查找是否有 @10 这种元素,有的话就将它移除
     9         if ([mutableArray[i]  isEqual: @10]) {
    10             [mutableArray removeObject:@10];
    11             break; // 退出循环
    12         }
    13     }
    14     return mutableArray;
    15 }
    16 
    17 int main(){
    18     NSLog(@"%@", kickOff10(@[@"sdf10", @"10oiu", @"10", @10, @"tt10", @10, @10,@"1010"]));
    19     return 0;
    20 }

    注意:可变数组的- (void)removeObject:(id)anObject方法是移除所有的anObject元素

  • 第五题
     1 import <Foundation/Foundation.h>
     2 
     3 int main() {
     4     // 创建一个NSDate(编写程序的时间为2015年4月14日)
     5     NSDate *today = [NSDate date];
     6     // 从现在往后推62100000秒,回到2013年5月5日
     7     NSDate *dateOf2013_5_5 = [NSDate dateWithTimeInterval:-62100000 sinceDate:today];
     8     // 创建一个格式化的NSDateFormatter对象
     9     NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    10     // 将格式设置为“xxxx-xx-xx”这种形式
    11     formatter.dateFormat = @"yyyy-MM-dd";
    12     // 将dateOf2013_5_5转化成格式化日期
    13     NSString *string = [formatter stringFromDate:dateOf2013_5_5];
    14     NSLog(@"%@", string);
    15     return 0;
    16 }
原文地址:https://www.cnblogs.com/oucding/p/4453280.html