iOS - NSString 封装
在实际项目开发过程中,发现字符串使用频率还是非常高的,NSString提供了很多相关的API,但是在开发过程中发现很多业务功能都是相同的。因此根据在开发过程中遇到的字符串使用场景,进行了简单封装。具体代码如下:
NSString+Category.h 代码:
//
// NSString+Category.h
// myApplication
//
// Created by xujinzhong on 2018/3/13.
// Copyright © 2018年 xujinzhong. All rights reserved.
// #import <Foundation/Foundation.h> @interface NSString (Category) - (BOOL)isBlank;
- (BOOL)isValid;
- (NSString *)removeWhiteSpacesFromString; - (NSUInteger)countNumberOfWords;
- (BOOL)containsString:(NSString *)subString;
- (BOOL)isBeginsWith:(NSString *)string;
- (BOOL)isEndssWith:(NSString *)string; - (NSString *)replaceCharcter:(NSString *)olderChar withCharcter:(NSString *)newerChar;
- (NSString*)getSubstringFrom:(NSInteger)begin to:(NSInteger)end;
- (NSString *)addString:(NSString *)string;
- (NSString *)removeSubString:(NSString *)subString; - (BOOL)containsOnlyLetters;
- (BOOL)containsOnlyNumbers;
- (BOOL)containsOnlyNumbersAndLetters;
- (BOOL)isInThisarray:(NSArray*)array; + (NSString *)getStringFromArray:(NSArray *)array;
- (NSArray *)getArray; + (NSString *)getMyApplicationVersion;
+ (NSString *)getMyApplicationName; - (NSData *)convertToData;
+ (NSString *)getStringFromData:(NSData *)data; - (BOOL)isValidEmail;
- (BOOL)isVAlidPhoneNumber;
- (BOOL)isValidUrl; @end
NSString+Category.m 代码:
//
// NSString+Category.m
// myApplication
//
// Created by xujinzhong on 2018/3/13.
// Copyright © 2018年 xujinzhong. All rights reserved.
// #import "NSString+Category.h" @implementation NSString (Category) //字符串是否为空
-(BOOL)isBlank
{
return ([[self removeWhiteSpacesFromString] isEqualToString:@""]) ? YES : NO;
} //字符串为空或nil
-(BOOL)isValid
{
return ([[self removeWhiteSpacesFromString] isEqualToString:@""] || self == nil || [self isEqualToString:@"(null)"]) ? NO :YES;
} //在字符串中删除空格
- (NSString *)removeWhiteSpacesFromString
{
NSString *trimmedString = [self stringByTrimmingCharactersInSet:
[NSCharacterSet whitespaceAndNewlineCharacterSet]];
return trimmedString;
} //字符串中包含单词数
- (NSUInteger)countNumberOfWords
{
NSScanner *scanner = [NSScanner scannerWithString:self];
NSCharacterSet *whiteSpace = [NSCharacterSet whitespaceAndNewlineCharacterSet]; NSUInteger count = ;
while ([scanner scanUpToCharactersFromSet: whiteSpace intoString: nil]) {
count++;
} return count;
} // 字符串中是否包含子字符串
- (BOOL)containsString:(NSString *)subString
{
return ([self rangeOfString:subString].location == NSNotFound) ? NO : YES;
} // 字符串从给定的字符串开始
- (BOOL)isBeginsWith:(NSString *)string
{
return ([self hasPrefix:string]) ? YES : NO;
} // 字符串以给定的字符串结束
- (BOOL)isEndssWith:(NSString *)string
{
return ([self hasSuffix:string]) ? YES : NO;
} // 用新字符替换字符串中的特定字符
- (NSString *)replaceCharcter:(NSString *)olderChar withCharcter:(NSString *)newerChar
{
return [self stringByReplacingOccurrencesOfString:olderChar withString:newerChar];
} // 从特定的位置获取子字符串,以使其正确
- (NSString*)getSubstringFrom:(NSInteger)begin to:(NSInteger)end
{
NSRange r;
r.location = begin;
r.length = end - begin;
return [self substringWithRange:r];
} // 将子字符串添加到主字符串
- (NSString *)addString:(NSString *)string
{
if(!string || string.length == )
return self; return [self stringByAppendingString:string];
} // 从字符串中删除指定字符串
-(NSString *)removeSubString:(NSString *)subString
{
if ([self containsString:subString])
{
NSRange range = [self rangeOfString:subString];
return [self stringByReplacingCharactersInRange:range withString:@""];
}
return self;
} // 字符串只包含字母
- (BOOL)containsOnlyLetters
{
NSCharacterSet *letterCharacterset = [[NSCharacterSet letterCharacterSet] invertedSet];
return ([self rangeOfCharacterFromSet:letterCharacterset].location == NSNotFound);
} // 字符串只包含数字
- (BOOL)containsOnlyNumbers
{
NSCharacterSet *numbersCharacterSet = [[NSCharacterSet characterSetWithCharactersInString:@""] invertedSet];
return ([self rangeOfCharacterFromSet:numbersCharacterSet].location == NSNotFound);
} // 字符串中包含数字和字母
- (BOOL)containsOnlyNumbersAndLetters
{
NSCharacterSet *numAndLetterCharSet = [[NSCharacterSet alphanumericCharacterSet] invertedSet];
return ([self rangeOfCharacterFromSet:numAndLetterCharSet].location == NSNotFound);
} // 字符串包含在数组中
- (BOOL)isInThisarray:(NSArray*)array
{
for(NSString *string in array) {
if([self isEqualToString:string]) {
return YES;
}
}
return NO;
} // 数组转换为字符串
+ (NSString *)getStringFromArray:(NSArray *)array
{
return [array componentsJoinedByString:@" "];
} // 字符串转换为数组
- (NSArray *)getArray
{
return [self componentsSeparatedByString:@" "];
} // 获取应用程序版本
+ (NSString *)getMyApplicationVersion
{
NSDictionary *info = [[NSBundle mainBundle] infoDictionary];
NSString *version = [info objectForKey:@"CFBundleVersion"];
return version;
} // 获取应用程序名称
+ (NSString *)getMyApplicationName
{
NSDictionary *info = [[NSBundle mainBundle] infoDictionary];
NSString *name = [info objectForKey:@"CFBundleDisplayName"];
return name;
} // 字符串转换为NSData
- (NSData *)convertToData
{
return [self dataUsingEncoding:NSUTF8StringEncoding];
} // NSData转换为字符串
+ (NSString *)getStringFromData:(NSData *)data
{
return [[NSString alloc] initWithData:data
encoding:NSUTF8StringEncoding];
} // 是否为邮件格式
- (BOOL)isValidEmail
{
NSString *regex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *emailTestPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
return [emailTestPredicate evaluateWithObject:self];
} // 是否为电话格式
- (BOOL)isVAlidPhoneNumber
{
NSString *regex = @"[235689][0-9]{6}([0-9]{3})?";
NSPredicate *test = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
return [test evaluateWithObject:self];
} // 是否为URL格式
- (BOOL)isValidUrl
{
NSString *regex =@"(http|https)://((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+";
NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
return [urlTest evaluateWithObject:self];
} @end
iOS - NSString 封装的更多相关文章
- IOS开发-封装数据库sqlite3之为何选择FMDB
为什么使用第三方轻量级框架FMDB? FMDB是用于进行数据存储的第三方的框架,它与SQLite与Core Data相比较,存在很多优势. FMDB是面向对象的,它以OC的方式封装了SQLite的C语 ...
- iOS 自己封装的网络请求,json解析的类
基本上所有的APP都会涉及网络这块,不管是用AFNetWorking还是自己写的http请求,整个网络框架的搭建很重要. 楼主封装的网络请求类,包括自己写的http请求和AFNetWorking的请求 ...
- iOS | AFNetworking封装
为大家分享一个IOS处理网络请求,网络上传,网络下载等功能全面的一个第三方框架-AFNetworking,这是一个使用非常方便的网络框架. 最新的版本是基于NSURLSession,原来的NSURLC ...
- iOS (封装)一句话调用系统的alertView和alertController
前言: 本文仅作参考存留,请用新版封装:iOS 更加优雅便捷的UIAlertView/UIAlertController封装使用 UIAlertController是iOS8.0之后出来的新方法,其将 ...
- iOS NSURLSession 封装下载类
周六日鼓捣NSURLSession,效率虽然低下,最后还是有了一点点眉目.昨天和汤老师一起测试,又对它加深了一点理解.趁热打铁,先总结一下. 封装的类,对外用的方法,我写的是类方法,所以,在类方法中, ...
- ios uiview封装动画(摘录)
iOS开发UI篇—核心动画(UIView封装动画) 一.UIView动画(首尾) 1.简单说明 UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画 ...
- iOS方法封装
(void) setSubView:(UIView *)masterView subCCGRect:(CGRect)subCCGRect imageName:(NSString *)imageName ...
- 勾勾街:用最小的成本封装一个苹果IOS APP! 封装技术再度升级~
勾勾街自上线以来,“遭到”大量群众的喜爱... 只能用遭到这个词儿,因为大家好像都被憋了很久了,哈哈哈! 我们的技术是先进的,也是首创的,但最近发现了另一个网站,把我们的技术抄走了.... 本来这个事 ...
- ios中封装网络和tableview的综合运用
1:封装网络请求 类 #import <Foundation/Foundation.h> #import "ASIFormDataRequest.h" #import ...
随机推荐
- shuts down an ExecutorService
shuts down an ExecutorService in two phases, first by calling shutdown to reject incoming tasks, and ...
- zend studio 10.6.2破解和汉化
破解文件下载地址 http://dldx.csdn.net/fd.php?i=881874911175745&s=b2f091d89f675e30c36dcc00c4cd2702 下载破解 ...
- YOLO3训练widerface数据集
因为YOLO3速度精度都很棒,所以想训练一下人脸模型,废话不多,进入正题 1写所有的配置文件 1.1 YOLO3-face.cfg 个人感觉YOLO的配置文件骑士和caffe差不多 在cfg/YOLO ...
- Oracle数据去重
一.完全重复数据去重方法 具体思路是,首先创建一个临时表,然后将DISTINCT之后的表数据插入到这个临时表中;然后清空原表数据;再讲临时表中的数据插入到原表中;最后删除临时表. 对于表中完全重 ...
- Centos 6.5 下Nginx安装部署https服务器
一般我们都需要先装pcre, zlib,前者为了重写rewrite,后者为了gzip压缩.1.选定源码目录选定目录 /usr/local/cd /usr/local/2.安装PCRE库cd /usr/ ...
- 2-5 Flutter开发环境与Android开发环境设置详解(Windows)
第二个是国内服务器的网址 andoid stuido的一些使用的说明文档 https://developer.android.google.cn/studio/intro 安装Flutter Dart ...
- php array数组(第一部分)
创建一个数组 <?php $arr = array("My","name","is","zhangsan"); e ...
- linux多线程加解锁
1.动态方式使用互斥量,该类型的互斥量在定义时不进行初始化,需要在使用之前初始化,使用结束销毁 1.1.定义一个锁变量: pthread_mutex_t g_mutex_Msg; 1. ...
- L2-013. 红色警报 (并查集)
战争中保持各个城市间的连通性非常重要.本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报.注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不 ...
- pandas基础(3)_数据处理
1:删除重复数据 使用duplicate()函数检测重复的行,返回元素为bool类型的Series对象,每个元素对应一行,如果该行不是第一次出现,则元素为true >>> df =D ...