【黑马程序员】给NSString添加三个方法

本文介绍了如何通过Objective-C为NSString扩展三个方法:字符串反转、计算英文字母个数及去除两端空格。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

利用分类给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;
}
### 黑马程序员 iOS 开发教程概述 黑马程序员提供了丰富的 iOS 开发课程资源,主要面向初学者到中级开发者。这些课程通常涵盖了 Objective-C 和 Swift 的基础知识、iOS 应用开发的核心概念以及实际项目实践等内容。 #### 1. **Objective-C 基础** 马程序员的 iOS 初级课程一般从 Objective-C 入手,这是苹果早期推荐的主要编程语言之一。以下是部分核心知识点: - 自动释放池 `@autoreleasepool` 是内存管理的重要工具,用于优化临时对象的生命周期[^3]。 - 使用 `NSLog` 函数替代传统的 `printf` 来打印调试信息。它不仅支持 C 数据类型的输出,还能够处理 OC 特有的数据类型,例如 `NSString`[^3]。 ```objc NSString *str = @"Hello, World!"; NSLog(@"%@", str); ``` #### 2. **Swift 编程入门** 虽然 Objective-C 曾经是主流,但随着 Apple 推广 Swift,现代 iOS 开发更多依赖于这门更现代化的语言。Swift 更简洁易读,适合新手快速上手。 - 变量定义:使用 `var` 或 `let` 关键字区分可变与不可变变量。 ```swift var mutableString = "Mutable" let immutableString = "Immutable" ``` - 函数定义:Swift 提供了灵活的函数语法,便于实现复杂的逻辑。 ```swift func greet(name: String) -> String { return "Hello, \(name)!" } print(greet(name: "World")) ``` #### 3. **UI 组件与布局设计** 学习如何构建用户界面 (UI),包括 Storyboard 和纯代码两种方式。常见的 UI 控件有 UILabel、UIButton、UITableView 等。 - 创建按钮并绑定点击事件: ```swift let button = UIButton(type: .system) button.setTitle("Tap Me", for: .normal) button.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside) @objc func buttonTapped() { print("Button was tapped!") } ``` #### 4. **网络请求与数据解析** 实现应用联网功能,获取远程服务器上的 JSON 数据,并将其转化为本地模型对象。 - 使用 URLSession 发起 GET 请求: ```swift guard let url = URL(string: "https://api.example.com/data") else { return } let task = URLSession.shared.dataTask(with: url) { data, response, error in if let data = data { do { let json = try JSONSerialization.jsonObject(with: data, options: []) print(json) } catch { print(error.localizedDescription) } } } task.resume() ``` #### 5. **数据库操作** 对于需要存储持久化数据的应用场景,SQLite 或 CoreData 是常用的选择。通过集成第三方库如 FMDB,可以简化 SQLite 的复杂度[^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值