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 = 0; 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 == 0) 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:@"0123456789"] 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
posted on 2018-03-13 11:25 东方🐺 阅读(297) 评论(0) 编辑 收藏 举报