146 lines
4.8 KiB
Objective-C
146 lines
4.8 KiB
Objective-C
//
|
|
// NSString+Helper.m
|
|
//
|
|
//
|
|
// Created by Giuseppe Nucifora on 02/07/15.
|
|
// Copyright (c) 2015 Giuseppe Nucifora All rights reserved.
|
|
//
|
|
|
|
#import "NSString+Helper.h"
|
|
#import <CommonCrypto/CommonDigest.h>
|
|
|
|
@implementation NSString (Helper)
|
|
|
|
- (BOOL) isValidEmail
|
|
{
|
|
BOOL stricterFilter = YES;
|
|
NSString *stricterFilterString = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,15}";
|
|
NSString *laxString = @".+@.+\\.[A-Za-z]{2}[A-Za-z]*";
|
|
NSString *emailRegex = stricterFilter ? stricterFilterString : laxString;
|
|
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
|
|
return [emailTest evaluateWithObject:self];
|
|
}
|
|
|
|
- (BOOL)isNumeric {
|
|
BOOL isValid = NO;
|
|
NSCharacterSet *alphaNumbersSet = [NSCharacterSet decimalDigitCharacterSet];
|
|
NSCharacterSet *stringSet = [NSCharacterSet characterSetWithCharactersInString:self];
|
|
isValid = [alphaNumbersSet isSupersetOfSet:stringSet];
|
|
return isValid;
|
|
}
|
|
|
|
- (BOOL) isValidPhoneNumber {
|
|
|
|
NSError *error = NULL;
|
|
NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypePhoneNumber error:&error];
|
|
NSArray *matches = [detector matchesInString:self options:0 range:NSMakeRange(0, [self length])];
|
|
|
|
if (matches != nil) {
|
|
for (NSTextCheckingResult *match in matches) {
|
|
if ([match resultType] == NSTextCheckingTypePhoneNumber) {
|
|
return YES;
|
|
}
|
|
}
|
|
}
|
|
return NO;
|
|
}
|
|
|
|
- (BOOL) isValidUrl {
|
|
NSString *urlRegEx = @"(http|https)://((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+";
|
|
NSString *urlRegEx2 =@"((?:http|https)://)?(?:www\\.)?[\\w\\d\\-_]+\\.\\w{2,3}(\\.\\w{2})?(/(?<=/)(?:[\\w\\d\\-./_]+)?)?";
|
|
|
|
NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegEx];
|
|
NSPredicate *urlTest2 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegEx2];
|
|
|
|
return [urlTest evaluateWithObject:self]|| [urlTest2 evaluateWithObject:self];
|
|
}
|
|
|
|
- (BOOL) isValidTaxCode {
|
|
|
|
NSString *urlRegEx = @"^[A-Z]{6}[A-Z0-9]{2}[A-Z][A-Z0-9]{2}[A-Z][A-Z0-9]{3}[A-Z]$";
|
|
NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegEx];
|
|
return [urlTest evaluateWithObject:self];
|
|
}
|
|
|
|
#pragma mark - Random String Method
|
|
|
|
+ (NSString *) getRandString: (int) length {
|
|
|
|
NSString *letters = @"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
|
|
|
|
NSMutableString *randomString = [NSMutableString stringWithCapacity: length];
|
|
|
|
for (int i=0; i<length; i++) {
|
|
[randomString appendFormat: @"%C", [letters characterAtIndex: arc4random() % [letters length]]];
|
|
}
|
|
|
|
return randomString;
|
|
}
|
|
|
|
- (NSString *) md5 {
|
|
const char *cStr = [self UTF8String];
|
|
unsigned char digest[16];
|
|
CC_MD5( cStr, (CC_LONG)strlen(cStr), digest ); // This is the md5 call
|
|
|
|
NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
|
|
|
|
for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++)
|
|
[output appendFormat:@"%02x", digest[i]];
|
|
|
|
return output;
|
|
|
|
}
|
|
|
|
- (NSString*) sha1 {
|
|
|
|
const char *cstr = [self cStringUsingEncoding:NSUTF8StringEncoding];
|
|
|
|
NSData *data = [NSData dataWithBytes:cstr length:self.length];
|
|
|
|
uint8_t digest[CC_SHA1_DIGEST_LENGTH];
|
|
|
|
CC_SHA1(data.bytes, (CC_LONG)data.length, digest);
|
|
|
|
NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2];
|
|
|
|
for(int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++)
|
|
[output appendFormat:@"%02x", digest[i]];
|
|
|
|
return output;
|
|
|
|
}
|
|
|
|
- (NSString*) sha256 {
|
|
|
|
const char *s=[self cStringUsingEncoding:NSASCIIStringEncoding];
|
|
NSData *keyData=[NSData dataWithBytes:s length:strlen(s)];
|
|
|
|
uint8_t digest[CC_SHA256_DIGEST_LENGTH]={0};
|
|
CC_SHA256(keyData.bytes, (CC_LONG)keyData.length, digest);
|
|
NSData *out=[NSData dataWithBytes:digest length:CC_SHA256_DIGEST_LENGTH];
|
|
NSString *hash=[out description];
|
|
hash = [hash stringByReplacingOccurrencesOfString:@" " withString:@""];
|
|
hash = [hash stringByReplacingOccurrencesOfString:@"<" withString:@""];
|
|
hash = [hash stringByReplacingOccurrencesOfString:@">" withString:@""];
|
|
return hash;
|
|
}
|
|
|
|
- (NSString*) sha512 {
|
|
|
|
const char *s=[self cStringUsingEncoding:NSASCIIStringEncoding];
|
|
NSData *keyData=[NSData dataWithBytes:s length:strlen(s)];
|
|
|
|
uint8_t digest[CC_SHA512_DIGEST_LENGTH]={0};
|
|
CC_SHA512(keyData.bytes, (CC_LONG)keyData.length, digest);
|
|
NSData *out=[NSData dataWithBytes:digest length:CC_SHA512_DIGEST_LENGTH];
|
|
NSString *hash=[out description];
|
|
hash = [hash stringByReplacingOccurrencesOfString:@" " withString:@""];
|
|
hash = [hash stringByReplacingOccurrencesOfString:@"<" withString:@""];
|
|
hash = [hash stringByReplacingOccurrencesOfString:@">" withString:@""];
|
|
return hash;
|
|
}
|
|
|
|
|
|
|
|
@end
|