zoukankan      html  css  js  c++  java
  • 给NSString增加Java风格的方法

    转载自:http://www.udpwork.com/item/7238.html

    源代码连接:https://github.com/tangqiaoboy/xcode_tool

    NSStringEx.h

    //
    //  NSStringEx.h
    //  NSStringEx
    //
    //  Created by Tang Qiao on 12-2-4.
    //  Copyright (c) 2012年 blog.devtang.com. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    @interface NSString(NSStringEx)
    
    /**
     * Return the char value at the specified index~
     */
    -(unichar) charAt:(int)index;
    
    /**
     * Compares two strings lexicographically.
     * the value 0 if the argument string is equal to this string;
     * a value less than 0 if this string is lexicographically less than the string argument;
     * and a value greater than 0 if this string is lexicographically greater than the string argument.
     */
    -(int) compareTo:(NSString*) anotherString;
    
    -(int) compareToIgnoreCase:(NSString*) str;
    
    -(BOOL) contains:(NSString*) str;
    
    -(BOOL) startsWith:(NSString*)prefix;
    
    -(BOOL) endsWith:(NSString*)suffix;
    
    -(BOOL) equals:(NSString*) anotherString;
    
    -(BOOL) equalsIgnoreCase:(NSString*) anotherString;
    
    -(int) indexOfChar:(unichar)ch;
    
    -(int) indexOfChar:(unichar)ch fromIndex:(int)index;
    
    - (int) indexOfString:(NSString*)str;
    
    -(int) indexOfString:(NSString*)str fromIndex:(int)index;
    
    -(int) lastIndexOfChar:(unichar)ch;
    
    -(int) lastIndexOfChar:(unichar)ch fromIndex:(int)index;
    
    -(int) lastIndexOfString:(NSString*)str;
    
    -(int) lastIndexOfString:(NSString*)str fromIndex:(int)index;
    
    -(NSString*) substringFromIndex:(int)beginIndex toIndex:(int)endIndex;
    
    -(NSString*) toLowerCase;
    
    -(NSString*) toUpperCase;
    
    -(NSString*) trim;
    
    -(NSString*) replaceAll:(NSString*)origin with:(NSString*)replacement;
    
    -(NSArray*) split:(NSString*) separator;
    
    @end


    NSStringEx.m

    //
    //  NSStringEx.m
    //  NSStringEx
    //
    //  Created by Tang Qiao on 12-2-4.
    //  Copyright (c) 2012年 blog.devtang.com. All rights reserved.
    //
    
    #import "NSStringEx.h"
    
    @implementation NSString(NSStringEx)
    
    #define JavaNotFound -1
    
    /**  Java-like method. Returns the char value at the specified index. */
    -(unichar) charAt:(int)index {
        return [self characterAtIndex:index];
    }
    
    /**
     * Java-like method. Compares two strings lexicographically.
     * the value 0 if the argument string is equal to this string;
     * a value less than 0 if this string is lexicographically less than the string argument;
     * and a value greater than 0 if this string is lexicographically greater than the string argument.
     */
    -(int) compareTo:(NSString*) anotherString {
        return [self compare:anotherString];
    }
    
    /** Java-like method. Compares two strings lexicographically, ignoring case differences. */
    -(int) compareToIgnoreCase:(NSString*) str {
        return [self compare:str options:NSCaseInsensitiveSearch];
    }
    
    /** Java-like method. Returns true if and only if this string contains the specified sequence of char values. */
    -(BOOL) contains:(NSString*) str {
        NSRange range = [self rangeOfString:str];
        return (range.location != NSNotFound);
    }
    
    -(BOOL) startsWith:(NSString*)prefix {
        return [self hasPrefix:prefix];
    }
    
    -(BOOL) endsWith:(NSString*)suffix {
        return [self hasSuffix:suffix];
    }
    
    -(BOOL) equals:(NSString*) anotherString {
        return [self isEqualToString:anotherString];
    }
    
    -(BOOL) equalsIgnoreCase:(NSString*) anotherString {
        return [[self toLowerCase] equals:[anotherString toLowerCase]];
    }
    
    -(int) indexOfChar:(unichar)ch{
        return [self indexOfChar:ch fromIndex:0];
    }
    
    -(int) indexOfChar:(unichar)ch fromIndex:(int)index{
        int len = self.length;
        for (int i = index; i < len; ++i) {
            if (ch == [self charAt:i]) {
                return i;
            }
        }
        return JavaNotFound;
    }
    
    -(int) indexOfString:(NSString*)str {
        NSRange range = [self rangeOfString:str];
        if (range.location == NSNotFound) {
            return JavaNotFound;
        }
        return range.location;
    }
    
    -(int) indexOfString:(NSString*)str fromIndex:(int)index {
        NSRange fromRange = NSMakeRange(index, self.length - index);
        NSRange range = [self rangeOfString:str options:NSLiteralSearch range:fromRange];
        if (range.location == NSNotFound) {
            return JavaNotFound;
        }
        return range.location;
    }
    
    -(int) lastIndexOfChar:(unichar)ch {
        int len = self.length;
        for (int i = len-1; i >=0; --i) {
            if ([self charAt:i] == ch) {
                return i;
            }
        }
        return JavaNotFound;
    }
    
    -(int) lastIndexOfChar:(unichar)ch fromIndex:(int)index {
        int len = self.length;
        if (index >= len) {
            index = len - 1;
        }
        for (int i = index; i >= 0; --i) {
            if ([self charAt:i] == ch) {
                return index;
            }
        }
        return JavaNotFound;
    }
    
    -(int) lastIndexOfString:(NSString*)str {
        NSRange range = [self rangeOfString:str options:NSBackwardsSearch];
        if (range.location == NSNotFound) {
            return JavaNotFound;
        }
        return range.location;
    }
    
    -(int) lastIndexOfString:(NSString*)str fromIndex:(int)index {
        NSRange fromRange = NSMakeRange(0, index);
        NSRange range = [self rangeOfString:str options:NSBackwardsSearch range:fromRange];
        if (range.location == NSNotFound) {
            return JavaNotFound;
        }
        return range.location;
    }
    
    -(NSString *) substringFromIndex:(int)beginIndex toIndex:(int)endIndex {
        if (endIndex <= beginIndex) {
            return @"";
        }
        NSRange range = NSMakeRange(beginIndex, endIndex - beginIndex);
        return [self substringWithRange:range];
    }
    
    -(NSString *) toLowerCase {
        return [self lowercaseString];
    }
    
    -(NSString *) toUpperCase {
        return [self uppercaseString];
    }
    
    -(NSString *) trim {
        return [self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
    }
    
    -(NSString *) replaceAll:(NSString*)origin with:(NSString*)replacement {
        return [self stringByReplacingOccurrencesOfString:origin withString:replacement];
    }
    
    -(NSArray *) split:(NSString*) separator {
        return [self componentsSeparatedByString:separator];
    }
    
    @end


  • 相关阅读:
    A simple tutorial on SQL Server 2005 Beta 2 Service Broker
    WSSDAL (WSS Data Access Layer) – a SharePoint Web Services alternative
    SQL Server 2005 Beta 2 Service Broker: Create Route
    Enterprise Library: Security Quickstart代码解析篇, Part 1
    Microsoft SQL Server 2005 Beta2初步体验
    Microsoft patterns & practices Enterprise Library系列分析文章
    今天迎来了酷酷的“小黑”- T43
    Windows SharePoint Services Software Development Kit
    Images of Ireland Desktop Theme for Windows XP
    Enterprise Library v1.0 Tutorials
  • 原文地址:https://www.cnblogs.com/java20130723/p/3212283.html
Copyright © 2011-2022 走看看