用Java風格使用OC——NSString類別 – JAVA編程語言程序開發技術文章

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
[cpp]
// 
//  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
[cpp] view plaincopy
// 
//  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 

使用方法:
[cpp] 
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]); 

輸出結果:

發佈留言