用Java风格使用OC——NSString类别
来源:互联网 发布:missa队内关系知乎 编辑:程序博客网 时间:2024/05/17 19:16
Objective-C是IOS开发的基本语言,用过OC的同学都知道,OC的方法名很长,但是表达的意思非常明确,估计设计者也是站在见名知意的角度上去考虑,这种语法风格特别适合母语是英语的人学习,上手会很快,因为写程序就和用英语说话一样。但是对与母语非英语的人来说,过长的方法名在理解上和记忆上就有点吃力了,相信开发IOS的朋友都有一种感觉,当要使用一个方法时,一下记不住方法名,然后去网上搜或查官方文档,但是熟悉之后,还是觉得OC在表达程序意思上还是有不错的地方的。
好了,言归正传,今天主要是利用OC中的类别来扩展NSString的方法,使其使用上比较接近Java的方法,由于我之前做过J2EE和Android,所以对Java是最熟悉的,面对OC中NSString过长的方法名,我自己为它扩展了一个类别,用Java中String的方法名来代替OC中NSString中常用方法,关于什么是类别,简单的说就是在保持原有类不变的情况下,为其增加扩展的方法,这样的目的是可以在保持源文件不变的情况下,动态为其扩展功能。下面来看看具体实现:
首先说明的是,这里没有实现所有Java中String类的方法,只实现了一些常用的,比如equals、subString、split等等...
新建一个文件,选择类别,然后输入类别的名字以及所扩展的类:
输入类别扩展名:
上代码:(需要使用的直接新建一个类别,然后将h和m文件代码考到新建类别中即可)
NSString+NSStringForJava.h
//// NSString+NSStringForJava.h// NSStringCategory//// Created by Ryan Tang on 12-10-17.// Copyright (c) 2012年 Ericsson Labs. All rights reserved.//#import <Foundation/Foundation.h>@interface NSString (NSStringForJava)//对比两个字符串内容是否一致- (BOOL) equals:(NSString*) string;//判断字符串是否以指定的前缀开头- (BOOL) startsWith:(NSString*)prefix;//判断字符串是否以指定的后缀结束- (BOOL) endsWith:(NSString*)suffix;//转换成大写- (NSString *) toLowerCase;//转换成小写- (NSString *) toUpperCase;//截取字符串前后空格- (NSString *) trim;//用指定分隔符将字符串分割成数组- (NSArray *) split:(NSString*) separator;//用指定字符串替换原字符串- (NSString *) replaceAll:(NSString*)oldStr with:(NSString*)newStr;//从指定的开始位置和结束位置开始截取字符串- (NSString *) substringFromIndex:(int)begin toIndex:(int)end;@end
//// NSString+NSStringForJava.m// NSStringCategory//// Created by Ryan Tang on 12-10-17.// Copyright (c) 2012年 Ericsson Labs. All rights reserved.//#import "NSString+NSStringForJava.h"@implementation NSString (NSStringForJava)//对比两个字符串内容是否一致- (BOOL) equals:(NSString*) string{ return [self isEqualToString:string];}//判断字符串是否以指定的前缀开头- (BOOL) startsWith:(NSString*)prefix{ return [self hasPrefix:prefix];}//判断字符串是否以指定的后缀结束- (BOOL) endsWith:(NSString*)suffix{ return [self hasSuffix:suffix];}//转换成小写- (NSString *) toLowerCase{ return [self lowercaseString];}//转换成大写- (NSString *) toUpperCase{ return [self uppercaseString];}//截取字符串前后空格- (NSString *) trim{ return [self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];}//用指定分隔符将字符串分割成数组- (NSArray *) split:(NSString*) separator{ return [self componentsSeparatedByString:separator];}//用指定字符串替换原字符串- (NSString *) replaceAll:(NSString*)oldStr with:(NSString*)newStr{ return [self stringByReplacingOccurrencesOfString:oldStr withString:newStr];}//从指定的开始位置和结束位置开始截取字符串- (NSString *) substringFromIndex:(int)begin toIndex:(int)end{ if (end <= begin) { return @""; } NSRange range = NSMakeRange(begin, end - begin); return [self substringWithRange:range];}@end
使用方法:
NSLog(@"Test equals:%@",[@"aaa" equals:@"aaa"] ? @"YES" : @"NO"); NSLog(@"Test startWith:%@",[@"abc" startsWith:@"a"] ? @"YES":@"NO"); NSLog(@"Test endWith:%@",[@"abc" endsWith:@"c"] ? @"YES":@"NO"); NSLog(@"Test toLowerCase:%@",[@"ABC" toLowerCase]); NSLog(@"Test toUpperCase:%@",[@"abc" toUpperCase]); NSLog(@"Test trim:%@",[@" abc " trim]); NSLog(@"Test replaceAll:%@",[@"abcd" replaceAll:@"bc" with:@"cd"]); NSLog(@"Test subString:%@",[@"abcdef" substringFromIndex:1 toIndex:4]); NSArray *strArgs = [@"a|b|c" split:@"|"]; NSLog(@"Test split%d",[strArgs count]);
输出结果:
对Android&IOS感兴趣的朋友可以加入我们的讨论QQ群,在这里,我们只讨论干货:
iOS群:220223507
Android群:282552849
欢迎关注我的新浪微博和我交流:@唐韧_Ryan
- 用Java风格使用OC——NSString类别
- OC—NSNumber和NSString
- oc——类——类别
- OC category类别的使用
- 类别 的使用实例(NSString的类别增加方法)
- 黑马程序员——OC之NSString
- OC——3、NSString类
- Snail—OC学习之字符串NSString
- OC—类的设计和NSString
- OC——多态、NSString的基本使用、点语法、成员变量作用域
- OC与Java对比学习(一)—— 字符串(NSString和String)
- 黑马程序员—OC基础--扩展(匿名类别)
- 黑马程序员—OC基础--类别与扩展
- 给NSString增加Java风格的方法
- 黑马程序员——OC热身——NSString、NSMutableString
- OC 时间NSDate (NSDate<——> NSString)
- 黑马程序员14——OC之Fundation(NSString)
- OC 时间NSDate (NSDate<——> NSString)
- Plane Spotting
- Android 模拟器端口重定向
- 辽宁将在大连营口建无人机监测基地-辽宁-大连-营口
- 计时器篇两个计时器API的讨论
- android.annotation.SuppressLint
- 用Java风格使用OC——NSString类别
- VC6.0致命错误 RC1015: 无法打开包含文件 'afxres.h'.解决方法
- 使用mp4v2将H264+AAC合成mp4文件
- directio,dsync & sync , async IO
- MTBF的配置
- Android, IOS和QNX之比较
- 如何使用eclipse打开已有工程
- Android开机时桌面Widget的载入流程
- 求值顺序