来自http://devtang.com/blog/2012/02/14/nsstring-java-like-wrapper/

NSStringWrapper.h

#import <Foundation/Foundation.h>

@interface NSString(Wrapper)

/**  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

==============================================

NSStringWrapper.m

#import "NSStringWrapper.h"

@implementation NSString(Wrapper)

#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

NSstring封装的更多相关文章

  1. iOS - NSString 封装

    在实际项目开发过程中,发现字符串使用频率还是非常高的,NSString提供了很多相关的API,但是在开发过程中发现很多业务功能都是相同的.因此根据在开发过程中遇到的字符串使用场景,进行了简单封装.具体 ...

  2. Objective-C精选字符串处理方法

    无论是什么编程语言对字符串的操作是少不了的,对复杂的字符串的分析和操作我们可以用正则表达式来达到我们的目的.简单的字符串处理我们可以借助OC中NSString封装好的字符串处理方法,不过前提是你得了解 ...

  3. 学习Objective-C入门教程(分享)

    原百度文库连接:http://wenku.baidu.com/view/6786064fe518964bcf847c63.html PS:需要原文档的可以留邮箱发送! (我叫雷锋,不要谢我) 学习Ob ...

  4. 三.OC基础--1.NSString的创建和使用,2多文件开发,3类方法,4封装

    三:OC--1.NSString的创建和使用, 1,创建常量字符串,注意使用“@“符号. NSString *astring = @"This is a String!"; //后 ...

  5. 用C语言封装OC对象(耐心阅读,非常重要)

    用C语言封装OC对象(耐心阅读,非常重要) 本文的主要内容来自这里 前言 做iOS开发的朋友,对OC肯定非常了解,那么大家有没有想过OC中NSInteger,NSObject,NSString这些对象 ...

  6. iOS项目相关@AFN&SDWeb的二次封装

    一,AFNetworking跟SDWebImge是功能强大且常用的第三方,然而在实际应用中需要封装用来复用今天就跟大家分享一下AFN&SDWeb的二次封装 1. HttpClient.h及.m ...

  7. IOS实现自动循环滚动广告--ScrollView的优化和封装

    一.问题分析 在许多App中,我们都会见到循环滚动的视图,比如广告,其实想实现这个功能并不难,用ScrollView就可以轻松完成,但是在制作的过程中还存在几个小问题,如果能够正确的处理好这些小问题, ...

  8. iOS UIAlertController跟AlertView用法一样 && otherButtonTitles:(nullable NSString *)otherButtonTitles, ... 写法

    今天写弹出框UIAlertController,用alertView习惯了,所以封装了一下,跟alertView用法一样,不说了,直接上代码: 先来了解一下otherButtonTitles:(nul ...

  9. iOS开发——post异步网络请求封装

    IOS中有许多网络请求的函数,同步的,异步的,通过delegate异步回调的. 在做一个项目的时候,上网看了很多别人的例子,发现都没有一个简单的,方便的异步请求的封装例子.我这里要给出的封装代码,是异 ...

随机推荐

  1. 需求:在浏览器加载完毕后,自动播放视频:出现play() failed because the user didn't interact with the document first.错误

    解决方法:给video标签加入<video muted></video> 静音即可. Chrome 66为了避免标签产生随机噪音. 参考链接:https://juejin.im ...

  2. C# 实现Ajax的方式总结

    1JavaScript实现AJAX效果 2.AjaxPro实现AJAX应用 3.微软AJAX控件库开发AJAX 比如ScriptManager,updatePanel,timer等 4.jquery ...

  3. 洛谷—— P1434 滑雪

    https://www.luogu.org/problem/show?pid=1434#sub 题目描述 Michael喜欢滑雪.这并不奇怪,因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜 ...

  4. 观察者模式 VS 责任链模式

    为什么要把观察者模式和责任链模式放在一起对比呢?这两个模式没有太多的相似性呀,真没有嘛?有相似性,我们在观察者模式中也提到了触发链(也叫做观察者链)的问题,一个具体的角色既可以是观察者,也可以是被观察 ...

  5. web服务器软件(Nginx,Apache,IIS,Lighttpd)介绍

    Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在 ...

  6. 低成本开始互联网创业:探讨域名、服务器、CDN、邮箱等节流之道

    互联网创业一直是个热门话题,对这个问题我也有不断的思考. 今天,探讨下如何低成本开始互联网创业. 背景 愿意冒险去创业的同志,大多是"屌丝"而非"高富帅",大多 ...

  7. Altium Designer如何移动选中的所有对象

    用shift去选中, 快捷键M S移动整体

  8. RISC-V工具链环境(基于Debian/Linux操作系统)

    RISC-V工具链环境(基于Debian/Linux操作系统) 提要 Debian/Linux虚拟机导入 启动虚拟机 SiFive/Nuclei SDK运行指南 Debian/Linux虚拟机存储位置 ...

  9. 部分城市关于.Net招聘数量

    2016-12-09更新统计数据 上海 10730 北京 6322 广州 4157 深圳 3548 成都 2291 重庆 706 厦门 285 2015-01-30日,前程无忧搜索".Net ...

  10. 22、DMA驱动程序框架

    一.使用DMA的优点及DMA支持的请求源(请求源是启动DMA传输的事件,可以认为是触发.它可以是软件,也可以是中断,或者外部事件) 1.DMA优点是其进行数据传输时不需要CPU的干涉,可以大大提高CP ...