NSString+MJExtension.m 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. //
  2. // NSString+MJExtension.m
  3. // MJExtensionExample
  4. //
  5. // Created by MJ Lee on 15/6/7.
  6. // Copyright (c) 2015年 小码哥. All rights reserved.
  7. //
  8. #import "NSString+MJExtension.h"
  9. @implementation NSString (MJExtension)
  10. - (NSString *)mj_underlineFromCamel
  11. {
  12. if (self.length == 0) return self;
  13. NSMutableString *string = [NSMutableString string];
  14. for (NSUInteger i = 0; i<self.length; i++) {
  15. unichar c = [self characterAtIndex:i];
  16. NSString *cString = [NSString stringWithFormat:@"%c", c];
  17. NSString *cStringLower = [cString lowercaseString];
  18. if ([cString isEqualToString:cStringLower]) {
  19. [string appendString:cStringLower];
  20. } else {
  21. [string appendString:@"_"];
  22. [string appendString:cStringLower];
  23. }
  24. }
  25. return string;
  26. }
  27. - (NSString *)mj_camelFromUnderline
  28. {
  29. if (self.length == 0) return self;
  30. NSMutableString *string = [NSMutableString string];
  31. NSArray *cmps = [self componentsSeparatedByString:@"_"];
  32. for (NSUInteger i = 0; i<cmps.count; i++) {
  33. NSString *cmp = cmps[i];
  34. if (i && cmp.length) {
  35. [string appendString:[NSString stringWithFormat:@"%c", [cmp characterAtIndex:0]].uppercaseString];
  36. if (cmp.length >= 2) [string appendString:[cmp substringFromIndex:1]];
  37. } else {
  38. [string appendString:cmp];
  39. }
  40. }
  41. return string;
  42. }
  43. - (NSString *)mj_firstCharLower
  44. {
  45. if (self.length == 0) return self;
  46. NSMutableString *string = [NSMutableString string];
  47. [string appendString:[NSString stringWithFormat:@"%c", [self characterAtIndex:0]].lowercaseString];
  48. if (self.length >= 2) [string appendString:[self substringFromIndex:1]];
  49. return string;
  50. }
  51. - (NSString *)mj_firstCharUpper
  52. {
  53. if (self.length == 0) return self;
  54. NSMutableString *string = [NSMutableString string];
  55. [string appendString:[NSString stringWithFormat:@"%c", [self characterAtIndex:0]].uppercaseString];
  56. if (self.length >= 2) [string appendString:[self substringFromIndex:1]];
  57. return string;
  58. }
  59. - (BOOL)mj_isPureInt
  60. {
  61. NSScanner *scan = [NSScanner scannerWithString:self];
  62. int val;
  63. return [scan scanInt:&val] && [scan isAtEnd];
  64. }
  65. - (NSURL *)mj_url
  66. {
  67. // [self stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet characterSetWithCharactersInString:@"!$&'()*+,-./:;=?@_~%#[]"]];
  68. #pragma clang diagnostic push
  69. #pragma clang diagnostic ignored"-Wdeprecated-declarations"
  70. return [NSURL URLWithString:(NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)self, (CFStringRef)@"!$&'()*+,-./:;=?@_~%#[]", NULL,kCFStringEncodingUTF8))];
  71. #pragma clang diagnostic pop
  72. }
  73. @end