Add NSString category

This commit is contained in:
Gregory John Casamento 2023-01-17 03:17:39 -05:00
parent c84557c823
commit 12c4d66809
2 changed files with 55 additions and 0 deletions

View file

@ -0,0 +1,12 @@
// This file is under the terms of the GPLv3, See COPYING for details
#ifndef INCLUDED_NSString_methods_H
#define INCLUDED_NSString_methods_H
@import <Foundation/NSString.h>
@interface NSString (methods}
- (NSString *) splitCamelCaseString;
@end
#endif

View file

@ -0,0 +1,43 @@
#import "NSString+methods.h"
// NSString category methods to add functionality to NSString
@implementation NSString (methods)
// Split a camel case string into a string with spaces
// e.g. "camelCaseString" becomes "camel Case String"
- (NSString *) splitCamelCaseString
{
NSMutableString *result = [NSMutableString string];
NSScanner *scanner = [NSScanner scannerWithString: self];
NSCharacterSet *uppercase = [NSCharacterSet uppercaseLetterCharacterSet];
NSCharacterSet *lowercase = [NSCharacterSet lowercaseLetterCharacterSet];
NSCharacterSet *letters = [NSCharacterSet letterCharacterSet];
NSString *buffer;
while (![scanner isAtEnd])
{
if ([scanner scanCharactersFromSet: uppercase intoString: &buffer])
{
[result appendString: buffer];
}
if ([scanner scanCharactersFromSet: lowercase intoString: &buffer])
{
if ([result length] > 0)
{
[result appendString: @" "];
}
[result appendString: [buffer capitalizedString]];
}
if ([scanner scanCharactersFromSet: letters intoString: &buffer])
{
[result appendString: buffer];
}
}
return result;
}
@end