zoukankan      html  css  js  c++  java
  • iOS

    在实际项目开发过程中,发现字符串使用频率还是非常高的,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
  • 相关阅读:
    JAVA heap space 内存溢出
    S数据导入
    全部物料的交期都要加上两天 V_OUT_PR
    S初始化生产环境数据
    修改邮件通知模板
    java 工具类使用
    Nginx 搭建图片服务器
    java 枚举类型 Enum
    aop设计原理(转)
    Callable+ThreadPoolExecutor实现多线程并发并获得返回值(转)
  • 原文地址:https://www.cnblogs.com/xujinzhong/p/8555163.html
Copyright © 2011-2022 走看看