(1)NSString+PJR.h
// Lib
//
// Created by Paritosh on 15/05/14.
//
//
/* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the <organization> nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#import <Foundation/Foundation.h>
#import <CoreGraphics/CoreGraphics.h>
#import <UIKit/UIKit.h>
#import "CommonVariables.h"
@interface NSString (PJR)
-(BOOL)isBlank;
-(BOOL)isValid;
- (NSString *)removeWhiteSpacesFromString;
- (NSUInteger)countNumberOfWords;
- (BOOL)containsString:(NSString *)subString;
- (BOOL)isBeginsWith:(NSString *)string;
- (BOOL)isEndssWith:(NSString *)string;
- (NSString *)replaceCharacter:(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)isValidAmericanPhoneNumber;
- (BOOL)isValidUrl;
- (BOOL)isValidChinesePhoneNumber;
- (NSString *) reverseString;
// modify frame height according to font size.
- (CGFloat)frameHeighWithFontSize:(CGFloat)fontSize viewWidth:(CGFloat)width;
@end
(2)NSString+PJR.m
// Lib
//
// Created by Paritosh on 15/05/14.
//
// * All rights reserved.
/*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the <organization> nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#import "NSString+PJR.h"
@implementation NSString (PJR)
// Checking if String is Empty
-(BOOL)isBlank
{
return ([[selfremoveWhiteSpacesFromString]isEqualToString:@""]) ?YES :NO;
}
//Checking if String is empty or nil
-(BOOL)isValid
{
return ([[selfremoveWhiteSpacesFromString]isEqualToString:@""] ||self ==nil || [selfisEqualToString:@"(null)"]) ?NO :YES;
}
// remove white spaces from String
- (NSString *)removeWhiteSpacesFromString
{
NSString *trimmedString = [selfstringByTrimmingCharactersInSet:
[NSCharacterSetwhitespaceAndNewlineCharacterSet]];
return trimmedString;
}
// Counts number of Words in String
- (NSUInteger)countNumberOfWords
{
NSScanner *scanner = [NSScannerscannerWithString:self];
NSCharacterSet *whiteSpace = [NSCharacterSetwhitespaceAndNewlineCharacterSet];
NSUInteger count = 0;
while ([scannerscanUpToCharactersFromSet: whiteSpace intoString:nil]) {
count++;
}
return count;
}
// If string contains substring
- (BOOL)containsString:(NSString *)subString
{
return ([selfrangeOfString:subString].location ==NSNotFound) ? NO :YES;
}
// If my string starts with given string
- (BOOL)isBeginsWith:(NSString *)string
{
return ([selfhasPrefix:string]) ?YES : NO;
}
// If my string ends with given string
- (BOOL)isEndssWith:(NSString *)string
{
return ([selfhasSuffix:string]) ?YES : NO;
}
// Replace particular characters in my string with new character
- (NSString *)replaceCharacter:(NSString *)olderChar withCharcter:(NSString *)newerChar
{
return [selfstringByReplacingOccurrencesOfString:olderCharwithString:newerChar];
}
// Get Substring from particular location to given lenght
- (NSString*)getSubstringFrom:(NSInteger)begin to:(NSInteger)end
{
NSRange r;
r.location = begin;
r.length = end - begin;
return [selfsubstringWithRange:r];
}
// Add substring to main String
- (NSString *)addString:(NSString *)string
{
if(!string || string.length == 0)
returnself;
return [selfstringByAppendingString:string];
}
// Remove particular sub string from main string
-(NSString *)removeSubString:(NSString *)subString
{
if ([selfcontainsString:subString])
{
NSRange range = [selfrangeOfString:subString];
return [selfstringByReplacingCharactersInRange:rangewithString:@""];
}
return self;
}
// If my string contains ony letters
- (BOOL)containsOnlyLetters
{
NSCharacterSet *letterCharacterset = [[NSCharacterSetletterCharacterSet]invertedSet];
return ([selfrangeOfCharacterFromSet:letterCharacterset].location ==NSNotFound);
}
// If my string contains only numbers
- (BOOL)containsOnlyNumbers
{
NSCharacterSet *numbersCharacterSet = [[NSCharacterSetcharacterSetWithCharactersInString:@"0123456789"]invertedSet];
return ([selfrangeOfCharacterFromSet:numbersCharacterSet].location ==NSNotFound);
}
// If my string contains letters and numbers
- (BOOL)containsOnlyNumbersAndLetters
{
NSCharacterSet *numAndLetterCharSet = [[NSCharacterSetalphanumericCharacterSet]invertedSet];
return ([selfrangeOfCharacterFromSet:numAndLetterCharSet].location ==NSNotFound);
}
// If my string is available in particular array
- (BOOL)isInThisarray:(NSArray*)array
{
for(NSString *stringin array) {
if([selfisEqualToString:string]) {
returnYES;
}
}
return NO;
}
// Get String from array
+ (NSString *)getStringFromArray:(NSArray *)array
{
return [arraycomponentsJoinedByString:@" "];
}
// Convert Array from my String
- (NSArray *)getArray
{
return [selfcomponentsSeparatedByString:@" "];
}
// Get My Application Version number
+ (NSString *)getMyApplicationVersion
{
NSDictionary *info = [[NSBundlemainBundle]infoDictionary];
NSString *version = [infoobjectForKey:@"CFBundleVersion"];
return version;
}
// Get My Application name
+ (NSString *)getMyApplicationName
{
NSDictionary *info = [[NSBundlemainBundle]infoDictionary];
NSString *name = [infoobjectForKey:@"CFBundleDisplayName"];
return name;
}
// Convert string to NSData
- (NSData *)convertToData
{
return [selfdataUsingEncoding:NSUTF8StringEncoding];
}
// Get String from NSData
+ (NSString *)getStringFromData:(NSData *)data
{
return [[NSStringalloc]initWithData:data
encoding:NSUTF8StringEncoding];
}
// Is Valid Email
- (BOOL)isValidEmail
{
NSString *regex =@"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *emailTestPredicate = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@", regex];
return [emailTestPredicateevaluateWithObject:self];
}
// Is Valid Phone
- (BOOL)isValidAmericanPhoneNumber
{
NSString *regex =@"[235689][0-9]{6}([0-9]{3})?";
NSPredicate *test = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@", regex];
return [testevaluateWithObject:self];
}
// Is Valid URL
- (BOOL)isValidUrl
{
NSString *regex =@"(http|https)://((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+";
NSPredicate *urlTest = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@",regex];
return [urlTestevaluateWithObject:self];
}
-(BOOL)isValidChinesePhoneNumber{
NSString * MOBILE =@"^1([37][0-9]|5[0-35-9]|8[025-9]|70|77)\\d{8}$";
NSString * CM =@"^1(34[0-8]|(3[5-9]|5[017-9]|8[278])\\d)\\d{7}$";
NSString * CU =@"^1(3[0-2]|5[256]|8[56])\\d{8}$";
NSString * CT =@"^1((33|53|8[09])[0-9]|349)\\d{7}$";
// NSString * PHS = @"^0(10|2[0-5789]|\\d{3})\\d{7,8}$";
NSPredicate *regextestmobile = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@", MOBILE];
NSPredicate *regextestcm = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@", CM];
NSPredicate *regextestcu = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@", CU];
NSPredicate *regextestct = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@", CT];
BOOL res1 = [regextestmobileevaluateWithObject:self];
BOOL res2 = [regextestcmevaluateWithObject:self];
BOOL res3 = [regextestcuevaluateWithObject:self];
BOOL res4 = [regextestctevaluateWithObject:self];
if (res1 || res2 || res3 || res4 )
{
returnYES;
}
else
{
returnNO;
}
}
- (NSString *) reverseString
{
NSUInteger len = [selflength];
// self 表示字符串本身
NSMutableString *retStr = [NSMutableStringstringWithCapacity:len];
while (len > 0) {
unichar c = [selfcharacterAtIndex:--len];
// 从后取一个字符 unicode
NSLog(@" c is %C", c);
NSString *s = [NSStringstringWithFormat:
@"%C", c];
[retStrappendString:s];
}
if (retStr !=nil && retStr.length > 0) {
return [retStrcopy];
}else
{
returnnil;
}
}
#pragma mark -
#pragma mark Resize Height
-(CGFloat)frameHeighWithFontSize:(CGFloat)fontSize viewWidth:(CGFloat)width
{
NSDictionary *attributes = @{NSFontAttributeName:[UIFontsystemFontOfSize:fontSize]};
CGSize size =CGSizeMake(0, 0);
if (iOS7) {
size = [selfsizeWithAttributes:attributes];
}else
{
size =CGSizeMake(fontSize*self.length, fontSize*1.3);
}
// 计算每一行的字数,往下取值,
NSInteger wordsPerLine =floor(width /fontSize);
// 得到取值后的每一行的宽度
CGFloat widthPerLine = fontSize *wordsPerLine;
// 得到文本的总行数
NSInteger nLines =ceil(size.width/widthPerLine );
// 根据行数得到文本的高度
CGFloat heigh = nLines *(size.height);
return heigh;
}
@end