ios常用的读取文件路径操作以及正则表达式
2014-11-13 11:43
761 查看
ios常用的读取文件路径操作以及正则表达式
//
// NSString+Common.h
// CatagoryDemo
//
// Created by
张洋洋 on 14-11-13.
// Copyright (c) 2014年
张洋洋. All rights reserved.
//
#import <Foundation/Foundation.h>
/*!
* @brief NSString 扩展
*/
@interface NSString (Common)
// 获取Documents路径
+ (NSString *)documentPath;
// 获取缓存路径
+ (NSString *)cachePath;
+ (NSString *)imageCachePath;
// 本地购物车路径
+ (NSString *)localShoppingCartPath;
//! 是否是合法邮箱
- (BOOL)isValidEmail;
//! 是否是合法号码
- (BOOL)isValidPhoneNumber;
//! 是否是合法的18位身份证号码
- (BOOL)isValidPersonID;
/**
* 功能:判断是否在地区码内
* 参数:地区码
*/
- (BOOL)areaCode:(NSString *)code;
//! 根据文件名返回路径
+ (NSString *)pathWithFileName:(NSString *)fileName;
+ (NSString *)pathWithFileName:(NSString *)fileName ofType:(NSString *)type;
// 根据秒数返回日期
+ (NSString *)dateWithSeconds:(NSUInteger)seconds;
@end
//
// NSString+Common.m
// CatagoryDemo
//
// Created by 张洋洋 on 14-11-13.
// Copyright (c) 2014年
张洋洋. All rights reserved.
//
#import "NSString+Common.h"
@implementation NSString (Common)
+ (NSString *)documentPath {
return [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
}
#pragma mark - 获取缓存路径
+ (NSString *)cachePath {
return [NSHomeDirectory() stringByAppendingPathComponent:@"Library/Caches"];
}
+ (NSString *)imageCachePath {
NSString *path = [[self cachePath] stringByAppendingPathComponent:@"Images"];
BOOL isDir = NO;
BOOL isDirExist = [[NSFileManager defaultManager] fileExistsAtPath:path
isDirectory:&isDir];
if (!isDir && !isDirExist) {
BOOL isSuccess = [[NSFileManager defaultManager] createDirectoryAtPath:path
withIntermediateDirectories:YES
attributes:nil error:nil];
if (isSuccess) {
NSLog(@"success");
}
}
return path;
}
+ (NSString *)localShoppingCartPath {
return [[self cachePath] stringByAppendingPathComponent:@"/cart.plist"];
}
#pragma mark - 验证邮箱格式
- (BOOL)isValidEmail {
NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
return [emailTest evaluateWithObject:self];
}
#pragma mark - 验证手机号码格式
- (BOOL)isValidPhoneNumber {
/**
* 手机号码
* 移动:134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188
* 联通:130,131,132,152,155,156,185,186
* 电信:133,1349,153,180,189
*/
NSString *mobile = @"^1(3[0-9]|5[0-35-9]|8[025-9])\\d{8}$";
/**
10 * 中国移动:China Mobile
11 * 134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188
12 */
NSString *chinaMobile = @"^1(34[0-8]|(3[5-9]|5[017-9]|8[278])\\d)\\d{7}$";
/**
15 * 中国联通:China Unicom
16 * 130,131,132,152,155,156,185,186
17 */
NSString * chinaUnicom = @"^1(3[0-2]|5[256]|8[56])\\d{8}$";
/**
20 * 中国电信:China Telecom
21 * 133,1349,153,180,189
22 */
NSString * chinaTelecom = @"^1((33|53|8[09])[0-9]|349)\\d{7}$";
NSPredicate *mobilePredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", mobile];
NSPredicate *cmPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", chinaMobile];
NSPredicate *cuPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", chinaUnicom];
NSPredicate *ctPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", chinaTelecom];
if ([mobilePredicate evaluateWithObject:self]
|| [cmPredicate evaluateWithObject:self]
|| [cuPredicate evaluateWithObject:self]
|| [ctPredicate evaluateWithObject:self]) {
return YES;
}
return NO;
}
/**
* 功能:验证身份证是否合法
* 参数:输入的身份证号
*/
- (BOOL)isValidPersonID {
// 判断位数
if (self.length != 15 && self.length != 18) {
return NO;
}
NSString *carid = self;
long lSumQT = 0;
// 加权因子
int R[] ={7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };
// 校验码
unsigned char sChecker[11]={'1','0','X', '9', '8', '7', '6', '5', '4', '3', '2'};
// 将15位身份证号转换成18位
NSMutableString *mString = [NSMutableString stringWithString:self];
if (self.length == 15) {
[mString insertString:@"19" atIndex:6];
long p = 0;
const charchar *pid = [mString UTF8String];
for (int i = 0; i<= 16; i++) {
p += (pid[i] - 48) * R[i];
}
int o = p % 11;
NSString *string_content = [NSString stringWithFormat:@"%c", sChecker[o]];
[mString insertString:string_content atIndex:[mString length]];
carid = mString;
}
// 判断地区码
NSString * sProvince = [carid substringToIndex:2];
if (![self areaCode:sProvince]) {
return NO;
}
// 判断年月日是否有效
// 年份
int strYear = [[self substringWithString:carid begin:6 end:4] intValue];
// 月份
int strMonth = [[self substringWithString:carid begin:10 end:2] intValue];
// 日
int strDay = [[self substringWithString:carid begin:12 end:2] intValue];
NSTimeZone *localZone = [NSTimeZone localTimeZone];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
[dateFormatter setTimeZone:localZone];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *date=[dateFormatter dateFromString:[NSString stringWithFormat:@"%d-%d-%d 12:01:01",
strYear, strMonth, strDay]];
if (date == nil) {
return NO;
}
const charchar *PaperId = [carid UTF8String];
// 检验长度
if(18 != strlen(PaperId)) return NO;
// 校验数字
for (int i = 0; i < 18; i++) {
if ( !isdigit(PaperId[i]) && !(('X' == PaperId[i] || 'x' == PaperId[i]) && 17 == i) ) {
return NO;
}
}
// 验证最末的校验码
for (int i=0; i<=16; i++) {
lSumQT += (PaperId[i]-48) * R[i];
}
if (sChecker[lSumQT%11] != PaperId[17] ) {
return NO;
}
return YES;
}
/**
* 功能:判断是否在地区码内
* 参数:地区码
*/
- (BOOL)areaCode:(NSString *)code {
NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
[dic setObject:@"北京" forKey:@"11"];
[dic setObject:@"天津" forKey:@"12"];
[dic setObject:@"河北" forKey:@"13"];
[dic setObject:@"山西" forKey:@"14"];
[dic setObject:@"内蒙古" forKey:@"15"];
[dic setObject:@"辽宁" forKey:@"21"];
[dic setObject:@"吉林" forKey:@"22"];
[dic setObject:@"黑龙江" forKey:@"23"];
[dic setObject:@"上海" forKey:@"31"];
[dic setObject:@"江苏" forKey:@"32"];
[dic setObject:@"浙江" forKey:@"33"];
[dic setObject:@"安徽" forKey:@"34"];
[dic setObject:@"福建" forKey:@"35"];
[dic setObject:@"江西" forKey:@"36"];
[dic setObject:@"山东" forKey:@"37"];
[dic setObject:@"河南" forKey:@"41"];
[dic setObject:@"湖北" forKey:@"42"];
[dic setObject:@"湖南" forKey:@"43"];
[dic setObject:@"广东" forKey:@"44"];
[dic setObject:@"广西" forKey:@"45"];
[dic setObject:@"海南" forKey:@"46"];
[dic setObject:@"重庆" forKey:@"50"];
[dic setObject:@"四川" forKey:@"51"];
[dic setObject:@"贵州" forKey:@"52"];
[dic setObject:@"云南" forKey:@"53"];
[dic setObject:@"西藏" forKey:@"54"];
[dic setObject:@"陕西" forKey:@"61"];
[dic setObject:@"甘肃" forKey:@"62"];
[dic setObject:@"青海" forKey:@"63"];
[dic setObject:@"宁夏" forKey:@"64"];
[dic setObject:@"新疆" forKey:@"65"];
[dic setObject:@"台湾" forKey:@"71"];
[dic setObject:@"香港" forKey:@"81"];
[dic setObject:@"澳门" forKey:@"82"];
[dic setObject:@"国外" forKey:@"91"];
if ([dic objectForKey:code] == nil) {
return NO;
}
return YES;
}
#pragma mark - 根据文件名返回路径
+ (NSString *)pathWithFileName:(NSString *)fileName {
return [self pathWithFileName:fileName ofType:nil];
}
+ (NSString *)pathWithFileName:(NSString *)fileName ofType:(NSString *)type {
return [[NSBundle mainBundle] pathForResource:fileName ofType:type];
}
/**
* 功能:获取指定范围的字符串
* 参数:字符串的开始小标
* 参数:字符串的结束下标
*/
- (NSString *)substringWithString:(NSString *)str begin:(NSInteger)begin end:(NSInteger )end {
return [str substringWithRange:NSMakeRange(begin, end)];
}
+ (NSString *)dateWithSeconds:(NSUInteger)seconds {
NSDate *date = [NSDate dateWithTimeIntervalSince1970:seconds];
NSString *str = [NSString stringWithFormat:@"%@", date];
NSArray *array = [str componentsSeparatedByString:@" "];
NSString *result = [array objectAtIndex:0];
if (array.count == 3) {
result = [NSString stringWithFormat:@"%@ %@", result, [array objectAtIndex:1]];
}
return result;
}
@end
//
// NSString+Common.h
// CatagoryDemo
//
// Created by
张洋洋 on 14-11-13.
// Copyright (c) 2014年
张洋洋. All rights reserved.
//
#import <Foundation/Foundation.h>
/*!
* @brief NSString 扩展
*/
@interface NSString (Common)
// 获取Documents路径
+ (NSString *)documentPath;
// 获取缓存路径
+ (NSString *)cachePath;
+ (NSString *)imageCachePath;
// 本地购物车路径
+ (NSString *)localShoppingCartPath;
//! 是否是合法邮箱
- (BOOL)isValidEmail;
//! 是否是合法号码
- (BOOL)isValidPhoneNumber;
//! 是否是合法的18位身份证号码
- (BOOL)isValidPersonID;
/**
* 功能:判断是否在地区码内
* 参数:地区码
*/
- (BOOL)areaCode:(NSString *)code;
//! 根据文件名返回路径
+ (NSString *)pathWithFileName:(NSString *)fileName;
+ (NSString *)pathWithFileName:(NSString *)fileName ofType:(NSString *)type;
// 根据秒数返回日期
+ (NSString *)dateWithSeconds:(NSUInteger)seconds;
@end
//
// NSString+Common.m
// CatagoryDemo
//
// Created by 张洋洋 on 14-11-13.
// Copyright (c) 2014年
张洋洋. All rights reserved.
//
#import "NSString+Common.h"
@implementation NSString (Common)
+ (NSString *)documentPath {
return [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
}
#pragma mark - 获取缓存路径
+ (NSString *)cachePath {
return [NSHomeDirectory() stringByAppendingPathComponent:@"Library/Caches"];
}
+ (NSString *)imageCachePath {
NSString *path = [[self cachePath] stringByAppendingPathComponent:@"Images"];
BOOL isDir = NO;
BOOL isDirExist = [[NSFileManager defaultManager] fileExistsAtPath:path
isDirectory:&isDir];
if (!isDir && !isDirExist) {
BOOL isSuccess = [[NSFileManager defaultManager] createDirectoryAtPath:path
withIntermediateDirectories:YES
attributes:nil error:nil];
if (isSuccess) {
NSLog(@"success");
}
}
return path;
}
+ (NSString *)localShoppingCartPath {
return [[self cachePath] stringByAppendingPathComponent:@"/cart.plist"];
}
#pragma mark - 验证邮箱格式
- (BOOL)isValidEmail {
NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
return [emailTest evaluateWithObject:self];
}
#pragma mark - 验证手机号码格式
- (BOOL)isValidPhoneNumber {
/**
* 手机号码
* 移动:134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188
* 联通:130,131,132,152,155,156,185,186
* 电信:133,1349,153,180,189
*/
NSString *mobile = @"^1(3[0-9]|5[0-35-9]|8[025-9])\\d{8}$";
/**
10 * 中国移动:China Mobile
11 * 134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188
12 */
NSString *chinaMobile = @"^1(34[0-8]|(3[5-9]|5[017-9]|8[278])\\d)\\d{7}$";
/**
15 * 中国联通:China Unicom
16 * 130,131,132,152,155,156,185,186
17 */
NSString * chinaUnicom = @"^1(3[0-2]|5[256]|8[56])\\d{8}$";
/**
20 * 中国电信:China Telecom
21 * 133,1349,153,180,189
22 */
NSString * chinaTelecom = @"^1((33|53|8[09])[0-9]|349)\\d{7}$";
NSPredicate *mobilePredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", mobile];
NSPredicate *cmPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", chinaMobile];
NSPredicate *cuPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", chinaUnicom];
NSPredicate *ctPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", chinaTelecom];
if ([mobilePredicate evaluateWithObject:self]
|| [cmPredicate evaluateWithObject:self]
|| [cuPredicate evaluateWithObject:self]
|| [ctPredicate evaluateWithObject:self]) {
return YES;
}
return NO;
}
/**
* 功能:验证身份证是否合法
* 参数:输入的身份证号
*/
- (BOOL)isValidPersonID {
// 判断位数
if (self.length != 15 && self.length != 18) {
return NO;
}
NSString *carid = self;
long lSumQT = 0;
// 加权因子
int R[] ={7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };
// 校验码
unsigned char sChecker[11]={'1','0','X', '9', '8', '7', '6', '5', '4', '3', '2'};
// 将15位身份证号转换成18位
NSMutableString *mString = [NSMutableString stringWithString:self];
if (self.length == 15) {
[mString insertString:@"19" atIndex:6];
long p = 0;
const charchar *pid = [mString UTF8String];
for (int i = 0; i<= 16; i++) {
p += (pid[i] - 48) * R[i];
}
int o = p % 11;
NSString *string_content = [NSString stringWithFormat:@"%c", sChecker[o]];
[mString insertString:string_content atIndex:[mString length]];
carid = mString;
}
// 判断地区码
NSString * sProvince = [carid substringToIndex:2];
if (![self areaCode:sProvince]) {
return NO;
}
// 判断年月日是否有效
// 年份
int strYear = [[self substringWithString:carid begin:6 end:4] intValue];
// 月份
int strMonth = [[self substringWithString:carid begin:10 end:2] intValue];
// 日
int strDay = [[self substringWithString:carid begin:12 end:2] intValue];
NSTimeZone *localZone = [NSTimeZone localTimeZone];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
[dateFormatter setTimeZone:localZone];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *date=[dateFormatter dateFromString:[NSString stringWithFormat:@"%d-%d-%d 12:01:01",
strYear, strMonth, strDay]];
if (date == nil) {
return NO;
}
const charchar *PaperId = [carid UTF8String];
// 检验长度
if(18 != strlen(PaperId)) return NO;
// 校验数字
for (int i = 0; i < 18; i++) {
if ( !isdigit(PaperId[i]) && !(('X' == PaperId[i] || 'x' == PaperId[i]) && 17 == i) ) {
return NO;
}
}
// 验证最末的校验码
for (int i=0; i<=16; i++) {
lSumQT += (PaperId[i]-48) * R[i];
}
if (sChecker[lSumQT%11] != PaperId[17] ) {
return NO;
}
return YES;
}
/**
* 功能:判断是否在地区码内
* 参数:地区码
*/
- (BOOL)areaCode:(NSString *)code {
NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
[dic setObject:@"北京" forKey:@"11"];
[dic setObject:@"天津" forKey:@"12"];
[dic setObject:@"河北" forKey:@"13"];
[dic setObject:@"山西" forKey:@"14"];
[dic setObject:@"内蒙古" forKey:@"15"];
[dic setObject:@"辽宁" forKey:@"21"];
[dic setObject:@"吉林" forKey:@"22"];
[dic setObject:@"黑龙江" forKey:@"23"];
[dic setObject:@"上海" forKey:@"31"];
[dic setObject:@"江苏" forKey:@"32"];
[dic setObject:@"浙江" forKey:@"33"];
[dic setObject:@"安徽" forKey:@"34"];
[dic setObject:@"福建" forKey:@"35"];
[dic setObject:@"江西" forKey:@"36"];
[dic setObject:@"山东" forKey:@"37"];
[dic setObject:@"河南" forKey:@"41"];
[dic setObject:@"湖北" forKey:@"42"];
[dic setObject:@"湖南" forKey:@"43"];
[dic setObject:@"广东" forKey:@"44"];
[dic setObject:@"广西" forKey:@"45"];
[dic setObject:@"海南" forKey:@"46"];
[dic setObject:@"重庆" forKey:@"50"];
[dic setObject:@"四川" forKey:@"51"];
[dic setObject:@"贵州" forKey:@"52"];
[dic setObject:@"云南" forKey:@"53"];
[dic setObject:@"西藏" forKey:@"54"];
[dic setObject:@"陕西" forKey:@"61"];
[dic setObject:@"甘肃" forKey:@"62"];
[dic setObject:@"青海" forKey:@"63"];
[dic setObject:@"宁夏" forKey:@"64"];
[dic setObject:@"新疆" forKey:@"65"];
[dic setObject:@"台湾" forKey:@"71"];
[dic setObject:@"香港" forKey:@"81"];
[dic setObject:@"澳门" forKey:@"82"];
[dic setObject:@"国外" forKey:@"91"];
if ([dic objectForKey:code] == nil) {
return NO;
}
return YES;
}
#pragma mark - 根据文件名返回路径
+ (NSString *)pathWithFileName:(NSString *)fileName {
return [self pathWithFileName:fileName ofType:nil];
}
+ (NSString *)pathWithFileName:(NSString *)fileName ofType:(NSString *)type {
return [[NSBundle mainBundle] pathForResource:fileName ofType:type];
}
/**
* 功能:获取指定范围的字符串
* 参数:字符串的开始小标
* 参数:字符串的结束下标
*/
- (NSString *)substringWithString:(NSString *)str begin:(NSInteger)begin end:(NSInteger )end {
return [str substringWithRange:NSMakeRange(begin, end)];
}
+ (NSString *)dateWithSeconds:(NSUInteger)seconds {
NSDate *date = [NSDate dateWithTimeIntervalSince1970:seconds];
NSString *str = [NSString stringWithFormat:@"%@", date];
NSArray *array = [str componentsSeparatedByString:@" "];
NSString *result = [array objectAtIndex:0];
if (array.count == 3) {
result = [NSString stringWithFormat:@"%@ %@", result, [array objectAtIndex:1]];
}
return result;
}
@end
相关文章推荐
- spark读取hdfs文件的路径使用正则表达式
- iOS中有关沙盒的一些知识的介绍(获取沙盒路径以及沙盒文件操作等)
- 正则表达式简单语法以及正则表达式在iOS中的常用方式
- iOS开发------常用正则表达式语法以及常用正则
- Php常用文件操作函数,正则表达式,个人学习总结
- iOS中有关沙盒的一些知识的介绍(获取沙盒路径以及沙盒文件操作等)
- perl正则表达式,文件读取常用方法
- iOS中系统自带正则表达式的应用以及一些常用的正则表达式
- java递归读取文件夹中的所有文件以及路径
- 文件路径常用操作
- 文件路径的正则表达式改啊改的
- Smarty 模板 图片、CSS、JavaScript文件路径替换(用ecshop的正则表达式)
- python常用的正则表达式操作
- 常用正则表达式,以及在js脚本中的应用
- java对cookie的操作比较简单,主要介绍下建立cookie和读取cookie,以及如何设定cookie的生命周期和cookie的路径问题。
- IOS-常用正则表达式
- python ! 点菜脚本 | 正则表达式 | 文件读取
- 正则表达式的常用方法和属性以及应用举例
- C++中正则表达式使用,正则表达式语法以及常用正则表达式大全
- LAMP兄弟连原创视频教程(PHP笔记四--正则表达式,文件,目录操作)