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


  • 相关阅读:
    Git failed with a fatal error. Authentication failed
    HttpClient 获取json,即使返回状态不成功也返回json
    win10恢复Windows Media Player
    .NET Core部署到linux(CentOS)最全解决方案
    EasyNetQ 相关问题和解决方法
    RabbitMQ And EasyNetQ
    打爆你的 CPU
    通过代码实现 OutOfMemory
    如何写一段死锁代码
    docker 容器(container)使用ssh服务登录一段时间无操作后自动断开问题解决
  • 原文地址:https://www.cnblogs.com/java20130723/p/3212283.html
Copyright © 2011-2022 走看看