NSString+Category.m 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. //
  2. // NSString+Category.m
  3. // 乐销
  4. //
  5. // Created by 刘惠萍 on 2017/3/25.
  6. // Copyright © 2017年 ping. All rights reserved.
  7. //
  8. #import "NSString+Category.h"
  9. @implementation NSString (Category)
  10. //运行时 安全
  11. + (void)load{
  12. static dispatch_once_t onceToken;
  13. dispatch_once(&onceToken, ^{
  14. method_exchangeImplementations(class_getInstanceMethod(self, @selector(substringToIndex:)), class_getInstanceMethod(self, @selector(sldSubstringToIndex:)));
  15. method_exchangeImplementations(class_getClassMethod(self, @selector(substringFromIndex:)), class_getClassMethod(self, @selector(sldSubstringFromIndex:)));
  16. });
  17. }
  18. - (NSString *)sldSubstringToIndex:(NSUInteger)to{
  19. if (self.length<to) {
  20. return @"";
  21. }
  22. return [self sldSubstringToIndex:to];
  23. }
  24. - (NSString *)sldSubstringFromIndex:(NSUInteger)to{
  25. if (self.length<to) {
  26. return @"";
  27. }
  28. return [self sldSubstringFromIndex:to];
  29. }
  30. + (NSNumber * (^)(NSString *))num{
  31. return ^(NSString *num){
  32. if (isStr(num)) {
  33. if ([num doubleValue]) {
  34. return [NSNumber numberWithDouble:[num doubleValue]];
  35. }
  36. }
  37. return @0;
  38. };
  39. }
  40. + (NSString * (^)(NSNumber *))str{
  41. return ^(NSNumber *num){
  42. if (isNum(num)) {
  43. return [NSString stringWithFormat:@"%@",num];
  44. }
  45. return @"";
  46. };
  47. }
  48. + (NSString * (^)(double))price{
  49. return ^(double num){
  50. return [NSString stringWithFormat:@"%.2f",num];
  51. };
  52. }
  53. + (NSString * (^)(double))dou{
  54. return ^(double num){
  55. return [NSString stringWithFormat:@"%@",[NSNumber numberWithDouble:num]];
  56. };
  57. }
  58. - (NSString *)smallImage{
  59. return self.smallImageCustomSize(200);
  60. }
  61. - (NSString *)middleImage{
  62. return self.smallImageCustomSize(400);
  63. }
  64. //全部有效
  65. + (BOOL)isAllValid:(NSArray *)aryStrs{
  66. if (!isAry(aryStrs)) {
  67. return false;
  68. }
  69. for (NSString * strItem in aryStrs) {
  70. if (!isStr(strItem)) {
  71. return false;
  72. }
  73. }
  74. return true;
  75. }
  76. //有一个有效
  77. + (BOOL)isHasOneValid:(NSArray *)aryStrs{
  78. for (NSString * strItem in aryStrs) {
  79. if (isStr(strItem)) {
  80. return true;
  81. }
  82. }
  83. return false;
  84. }
  85. //截取字符串
  86. + (NSString *)subStr:(NSString *)string num:(NSInteger)num{
  87. if (!isStr(string)) {
  88. return @"";
  89. }
  90. if (string.length >= num) {
  91. return [string substringToIndex:num];
  92. }else{
  93. return string;
  94. }
  95. return @"";
  96. }
  97. //has string in self
  98. - (BOOL)hasString:(NSString *)str{
  99. if (!isStr(str)) return false;
  100. NSRange range = [self rangeOfString:str];
  101. return range.location != NSNotFound;
  102. }
  103. //获取高度
  104. - (CGFloat)fetchHeightWidthLimint:(CGFloat)width fontNum:(CGFloat)fontNum lineSpace:(CGFloat)lineSpace{
  105. //fetch height
  106. UIFont * font = [UIFont systemFontOfSize:fontNum];
  107. CGRect frame = [self boundingRectWithSize:CGSizeMake(width, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:lineSpace?@{NSParagraphStyleAttributeName:[NSMutableParagraphStyle initWithLineSpace:lineSpace],NSFontAttributeName:font}:@{NSFontAttributeName:font} context:nil];
  108. //如果只有一行
  109. if (lineSpace && CGRectGetHeight(frame) == font.lineHeight + lineSpace) {
  110. return font.lineHeight;
  111. }
  112. return CGRectGetHeight(frame);
  113. }
  114. #pragma mark - Base64编码
  115. - (NSString *)base64Encode
  116. {
  117. //先将string转换成data
  118. NSData *data = [self dataUsingEncoding:NSUTF8StringEncoding];
  119. NSData *base64Data = [data base64EncodedDataWithOptions:0];
  120. NSString *baseString = [[NSString alloc]initWithData:base64Data encoding:NSUTF8StringEncoding];
  121. return baseString;
  122. }
  123. #pragma mark - Base64解码
  124. - (NSString *)base64Decode
  125. {
  126. NSData *data = [[NSData alloc]initWithBase64EncodedString:self options:NSDataBase64DecodingIgnoreUnknownCharacters];
  127. NSString *string = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
  128. return string;
  129. }
  130. @end