iOS - NSString 封装
阅读原文时间:2023年07月11日阅读:1

在实际项目开发过程中,发现字符串使用频率还是非常高的,NSString提供了很多相关的API,但是在开发过程中发现很多业务功能都是相同的。因此根据在开发过程中遇到的字符串使用场景,进行了简单封装。具体代码如下:

NSString+Category.h 代码:

//
// NSString+Category.h
// myApplication
//
// Created by xujinzhong on 2018/3/13.
// Copyright © 2018年 xujinzhong. All rights reserved.
//

#import

@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 = ;
    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 == )
    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:@""] 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

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器