NSString的常用分類(lèi)

工作中,為了方便,我們經(jīng)常會(huì)對(duì)一些類(lèi)進(jìn)行擴(kuò)展,新建一些分類(lèi)。。。
以下是我在工作中整理的一套自己的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];
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容