工作中翘狱,為了方便秘案,我們經(jīng)常會(huì)對(duì)一些類進(jìn)行擴(kuò)展,新建一些分類潦匈。阱高。。
以下是我在工作中整理的一套自己的NSString的Category茬缩,分享給大家赤惊,如喜歡,請(qǐng)留言支持以下凰锡。
也歡迎大家持續(xù)補(bǔ)充未舟,我會(huì)整理一下,讓更多的人看到掂为。裕膀。。
- 正則匹配電話號(hào)碼
-(BOOL)isVAlidPhoneNumber
{
NSString *regex = @"^(13|15|17|18|14)\\d{9}$";
NSPredicate * pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
BOOL isMatch =[pred evaluateWithObject:self];
return isMatch;
}
- 正則匹配郵箱
-(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];
}
- 正則匹配URL地址
-(BOOL)isValidUrl
{
NSString *regex =@"[a-zA-z]+://[^\\s]*";
NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
return [urlTest evaluateWithObject:self];
}
- 判斷字符串是否以某個(gè)字符串開(kāi)頭
-(BOOL)isBeginsWith:(NSString *)string
{
return ([self hasPrefix:string]) ? YES : NO;
}
- 判斷字符串是否以某個(gè)字符串結(jié)尾
-(BOOL)isEndssWith:(NSString *)string
{
return ([self hasSuffix:string]) ? YES : NO;
}
- 判斷字符串是否包含某個(gè)字符串
-(BOOL)containsString:(NSString *)subString
{
return ([self rangeOfString:subString].location == NSNotFound) ? NO : YES;
}
- 新字符串替換老字符串
-(NSString *)replaceCharcter:(NSString *)olderChar withCharcter:(NSString *)newerChar
{
return [self stringByReplacingOccurrencesOfString:olderChar withString:newerChar];
}
- 截取字符串(字符串都是從第0個(gè)字符開(kāi)始數(shù)的哦~)
-(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];
}
- 從主字符串中移除某個(gè)字符串
-(NSString *)removeSubString:(NSString *)subString
{
if ([self containsString:subString])
{
NSRange range = [self rangeOfString:subString];
return [self stringByReplacingCharactersInRange:range withString:@""];
}
return self;
}
- 去掉字符串中的空格
-(NSString *)removeWhiteSpacesFromString
{
NSString *trimmedString = [self stringByTrimmingCharactersInSet:
[NSCharacterSet whitespaceAndNewlineCharacterSet]];
return trimmedString;
}
- 判斷字符串是否只包含字母-1
-(BOOL)containsOnlyLetters
{
NSCharacterSet *letterCharacterset = [[NSCharacterSet letterCharacterSet] invertedSet];
return ([self rangeOfCharacterFromSet:letterCharacterset].location == NSNotFound);
}
- 判斷字符串是否只包含字母-2(正則)
-(BOOL)isLetter {
NSString *regEx = @"^[A-Za-z]+$";
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regEx];
return [pred evaluateWithObject:self];
}
- 判斷字符串是否只包含數(shù)字-1
-(BOOL)containsOnlyNumbers
{
NSCharacterSet *numbersCharacterSet = [[NSCharacterSet characterSetWithCharactersInString:@"0123456789"] invertedSet];
return ([self rangeOfCharacterFromSet:numbersCharacterSet].location == NSNotFound);
}
- 判斷字符串是否只包含數(shù)字-2(正則)
-(BOOL)isNumbers {
NSString *regEx = @"^-?\\d+.?\\d?";
NSPredicate *pred= [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regEx];
return [pred evaluateWithObject:self];
}
- 判斷字符串是否只包含數(shù)字和字母
-(BOOL)containsOnlyNumbersAndLetters
{
NSCharacterSet *numAndLetterCharSet = [[NSCharacterSet alphanumericCharacterSet] invertedSet];
return ([self rangeOfCharacterFromSet:numAndLetterCharSet].location == NSNotFound);
}
- 由字母或數(shù)字組成 6-18位密碼字符串(正則)
-(BOOL)isPassword {
NSString * regex = @"^[A-Za-z0-9_]{6,18}$";
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
return [pred evaluateWithObject:self];
}
- 判斷數(shù)組中是否包含某個(gè)字符串
-(BOOL)isInThisarray:(NSArray*)array
{
for(NSString *string in array) {
if([self isEqualToString:string]) {
return YES;
}
}
return NO;
}
- 字符串轉(zhuǎn)Data
-(NSData *)convertToData
{
return [self dataUsingEncoding:NSUTF8StringEncoding];
}
- Data轉(zhuǎn)字符轉(zhuǎn)
+(NSString *)getStringFromData:(NSData *)data
{ return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}
- 獲取系統(tǒng)版本號(hào)
+(NSString *)getMyApplicationVersion
{
NSDictionary *info = [[NSBundle mainBundle] infoDictionary];
NSString *shortVersion = [info objectForKey:@"CFBundleShortVersionString"];
return [NSString stringWithFormat:@"%@", shortVersion];
// NSString *bundleVersion = [info objectForKey:@"CFBundleVersion"]; 測(cè)試字段號(hào)
// NSString *name = [info objectForKey:@"CFBundleDisplayName"]; app 名字
}
- 字符串編碼
-(NSString*)EncodingWithUTF8
{
NSString *urlStrl = [self stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
return urlStrl;
}
- 獲取當(dāng)前時(shí)間
+(NSString*)getCurrentTimeString
{
//獲取系統(tǒng)當(dāng)前時(shí)間
NSDate *currentDate = [NSDate date];
//用于格式化NSDate對(duì)象
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
//設(shè)置格式:zzz表示時(shí)區(qū)
[dateFormatter setDateFormat:@"HH:mm:ss"];
//NSDate轉(zhuǎn)NSString
NSString *currentDateString = [dateFormatter stringFromDate:currentDate];
//輸出currentDateString
return currentDateString;
}
- 通知字符串長(zhǎng)度 (文字 2個(gè)字節(jié) 字母:1個(gè)字節(jié))
// 統(tǒng)計(jì)ASCII和Unicode混合文本長(zhǎng)度
-(NSUInteger) unicodeLengthOfString {
NSUInteger asciiLength = 0;
for (NSUInteger i = 0; i < self.length; i++) {
unichar uc = [self characterAtIndex: i];
asciiLength += isascii(uc) ? 1 : 2;
}
NSUInteger unicodeLength = asciiLength / 2;
if(asciiLength % 2) {
unicodeLength++;
}
return unicodeLength;
}
- 計(jì)算屬性字符文本占用的寬高
/**
* 計(jì)算屬性字符文本占用的寬高
* @param font 顯示的字體
* @param maxSize 最大的顯示范圍
* @param lineSpacing 行間距
* @return 占用的寬高
*/
-(CGSize)attrStrSizeWithFont:(UIFont *)font andmaxSize:(CGSize)maxSize lineSpacing:(CGFloat)lineSpacing{
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle setLineSpacing:lineSpacing];
NSDictionary *dict = @{NSFontAttributeName: font,
NSParagraphStyleAttributeName: paragraphStyle};
CGSize sizeToFit = [self boundingRectWithSize:maxSize // 用于計(jì)算文本繪制時(shí)占據(jù)的矩形塊
options:NSStringDrawingTruncatesLastVisibleLine |NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading // 文本繪制時(shí)的附加選項(xiàng)
attributes:dict // 文字的屬性
context:nil].size; // context上下文菩掏。包括一些信息魂角,例如如何調(diào)整字間距以及縮放。該對(duì)象包含的信息將用于文本繪制智绸。該參數(shù)可為nil
return sizeToFit;
}
- 時(shí)間戳轉(zhuǎn)時(shí)間
-(NSDate *)dateValueWithMillisecondsSince1970 {
return [NSDate dateWithTimeIntervalSince1970:[self doubleValue] / 1000];
}