搜索
简帛阁>技术文章>黑马程序员——编程题:给NSString增加分类并实现3种方法

黑马程序员——编程题:给NSString增加分类并实现3种方法

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

感谢同学的分享,题目如下:

利用分类给NSString扩展3个方法(Objective-C)

1>    字符串反转(比如@”123”调用方法后返回@”321”)
2>    计算英文字母的个数(比如@”5435abc54abc3AHJ5”调用方法后返回的是9)

3>    去除字符串两端空格(比如@”  1235 45 ”调用方法后返回@”1235 45”)

解题方法:

//
//  NSString+Turnback.h
//
//  将字符串反转(比如@”123”调用方法后返回@”321”)

#import <Foundation/Foundation.h>

@interface NSString (Turnback)

+ (NSString *)doturnback:(NSString *)str;

@end

//
//  NSString+Turnback.m
// 

#import "NSString+Turnback.h"

@implementation NSString (Turnback)

+ (NSString *)doturnback:(NSString *)str
{
    NSMutableString *str1 = [[NSMutableString alloc] initWithString:str];
   
    int count = (int)str1.length;
   
    for (int i = 0; i <= (count/2); i++)
    {
        char left = [str1 characterAtIndex:i];
        char right = [str1 characterAtIndex:(count - i - 1)];
       
        NSString *rightnow = [[NSString alloc]initWithFormat:@"%c",left];
        NSString *leftnow = [[NSString alloc]initWithFormat:@"%c",right];
       
        [str1 replaceCharactersInRange:NSMakeRange(i, 1) withString:leftnow];
        [str1 replaceCharactersInRange:NSMakeRange((count - i - 1), 1) withString:rightnow];
    }
    return str1;

}


@end

//
//  NSString+Countzimu.h
//
//  计算英文字母的个数(比如@”5435abc54abc3AHJ5”调用方法后返回的是9)

#import <Foundation/Foundation.h>

@interface NSString (Countzimu)

+ (int)docountzimu:(NSString *)str;

@end

//
//  NSString+Countzimu.m
// 

#import "NSString+Countzimu.h"

@implementation NSString (Countzimu)

+ (int)docountzimu:(NSString *)str
{
    int num = 0;
    for (int i = 0; i < str.length; i++)
    {
        if ((([str characterAtIndex:i] >= 'a') && ([str characterAtIndex:i] <= 'z')) || (([str characterAtIndex:i] >= 'A') && ([str characterAtIndex:i] <= 'Z')))
        {
            num++;
        }
    }
    return num;
}

@end

//
//  NSString+Delspace.h
// 
//  去除字符串两端空格(比如@”  1235 45 ”调用方法后返回@”1235 45”)

#import <Foundation/Foundation.h>

@interface NSString (Delspace)

+ (NSString *)dodelspace:(NSString *)str;

@end

//
//  NSString+Delspace.m
//

#import "NSString+Delspace.h"

@implementation NSString (Delspace)

+ (NSString *)dodelspace:(NSString *)str
{
    NSMutableString *str1 = [[NSMutableString alloc] initWithString:str];
   
    while ([str1 characterAtIndex:0] == ' ')
    {
        [str1 deleteCharactersInRange:NSMakeRange(0, 1)];
    }
   
    while ([str1 characterAtIndex:([str1 length] - 1)] == ' ')
    {
        [str1 deleteCharactersInRange:NSMakeRange(([str1 length] - 1), 1)];
    }
   
    return str1;
}

@end

//
//  main.m
// 

#import <Foundation/Foundation.h>
#import "NSString+Delspace.h"
#import "NSString+Turnback.h"
#import "NSString+Countzimu.h"

int main()
{
    NSString *str = @"          ujdu            ";
   
    NSLog(@"\n%@",[NSString dodelspace:str]);
   
    NSString *str1 = @"1234567890abcdefghijklmn";
   
    NSLog(@"\n%@",[NSString doturnback:str1]);
   
    NSString *str2 = @"122819427jhjhjhjh";
   
    NSLog(@"\n%d",[NSString docountzimu:str2]);
   
    return 0;
}


ava培训、Android培训、iOS培训、Net培训、期待与您交流!感谢同学的分享,题目如下:利用分类NSString扩展3方法(ObjectiveC)1>字符串反转(比如@”123”调用方法
Java培训、Android培训、iOS培训、Net培训、期待与您交流!知识列表网络编程三要网络参考模型获取IPTCP和UDP的区别SocketUDP发送端和接收端TCP客户端和服务端1)网络编程三要
Java培训、Android培训、iOS培训、Net培训、期待与您交流!网络编程一、概述。当我们需要在计算机和计算机之间进行数据传输的时候,我们就需要通过网络通讯。那么我们应该怎么获取网络通信,网络通
ndroid培训、java培训、期待与您交流!java语言组成部分。1关键字,2标识符,3注释,4常量和变量,5运算符,6语句,7函数,8数组。1,关键字分类:2,标识符即在程序中自定义的一些名称。
>Java培训、Android培训、iOS培训、Net培训、期待与您交流!菜鸟黑马第一次开通博客,略微有些兴奋,在这个全民自由发言的时代,我也可以在互联网上写出自己的文章,这对不太喜欢表达自己内心想法
android培训、java培训、期待与您交流!一网络编程1网络模型:传输方式(1)OSI参考模型,共7层。应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。每一层都有自己特有的数据信息。(
ndroid培训、java培训、期待与您交流!作为第一篇学习日记,我觉得应该写一些需要记忆的东西,命名规则呀什么的,因为每一种语言都有自己特有的命名规则(比如:C中方法的首字母大写而java中不是
WindowsPhone7手机开发、Net培训、期待与您交流!黑马程序员Net学习日记C编程基础今天我看了基础提高视频,我巩固了我的基础知识,也纠正了我以前的一些错误的观点字段,方法,属性都可以叫
android培训、java培训、期待与您交流!怀揣着激动的心情,写这篇日志,但因为博客三天后才能发博文,所以只能缓一缓发上。了解到黑马,真是荣幸。这是软件培训的新东方,感觉处于早期高速火爆的场面,这
网络编程UDP协议Java培训、Android培训、iOS培训、Net培训、期待与您交流!UDP传输:发送端和接收端是两个独立运行的程序,两者谁先启动,有没有启动都无所谓,因为不需要建立连接,在我