This is NSString+Trimming.m in view mode; [Download] [Up]
#import "NSString+Trimming.h"
#import <Foundation/NSCharacterSet.h>
#import <stdio.h>
@implementation NSString (MiscTrimming)
// This method donated by Carl Lindberg
- (NSString *)stringByTrimmingLeadWhiteSpaces
{
NSCharacterSet *nonSpaceSet;
NSRange validCharRange;
nonSpaceSet = [[NSCharacterSet whitespaceAndNewlineCharacterSet]
invertedSet];
validCharRange = [self rangeOfCharacterFromSet:nonSpaceSet];
if (validCharRange.length == 0)
return [NSString stringWithCString:""];
else
return [self substringFromIndex:validCharRange.location];
}
// This method donated by Carl Lindberg
- (NSString *)stringByTrimmingTailWhiteSpaces
{
NSCharacterSet *nonSpaceSet;
NSRange validCharRange;
nonSpaceSet = [[NSCharacterSet whitespaceAndNewlineCharacterSet]
invertedSet];
validCharRange = [self rangeOfCharacterFromSet:nonSpaceSet
options:NSBackwardsSearch];
if (validCharRange.length == 0)
return [NSString stringWithCString:""];
else
return [self substringToIndex:validCharRange.location+1];
}
// This method donated by Carl Lindberg
- (NSString *)stringByTrimmingWhiteSpaces
{
return [[self stringByTrimmingLeadWhiteSpaces]
stringByTrimmingTailWhiteSpaces];
}
// This method donated by Robert Todd Thomas
- (NSString *) stringByTrimmingLeadSpaces
{
NSMutableString* tempString;
tempString = [[self mutableCopy] autorelease];
[tempString trimLeadSpaces];
// Make an immutable copy.
return [[tempString copy] autorelease];
}
// This method donated by Robert Todd Thomas
- (NSString *) stringByTrimmingTailSpaces
{
NSMutableString* tempString;
tempString = [[self mutableCopy] autorelease];
[tempString trimTailSpaces];
return [[tempString copy] autorelease];
}
// This method donated by Robert Todd Thomas
- (NSString *) stringByTrimmingSpaces
{
NSMutableString* tempString;
tempString = [[self mutableCopy] autorelease];
[tempString trimLeadSpaces];
[tempString trimTailSpaces];
return [[tempString copy] autorelease];
}
@end
@implementation NSMutableString (MiscMutableTrimming)
// This method donated by Robert Todd Thomas
- (void) trimLeadSpaces
/*"
Trims any leading spaces from our string value. If we are the empty
string or are completely made up of spaces then the result will be
the empty string.
"*/
{
int location = 0;
int length = [self length];
while ((location < length) &&
([self characterAtIndex:location] == ' ')) {
location++;
}
// If there was at least one space..
if (location > 0) {
NSRange spaceRange;
spaceRange.location = 0;
spaceRange.length = location;
[self deleteCharactersInRange:spaceRange];
}
}
// This method donated by Robert Todd Thomas
- (void) trimTailSpaces
{
int length = [self length];
int location = length - 1;
while ((location >= 0) &&
([self characterAtIndex:location] == ' ')) {
location--;
}
// If there was at least one space..
if (location < length - 1) {
NSRange spaceRange;
// Different cases if all spaces..
spaceRange.location = (location == 0) ? 0 : location + 1;
spaceRange.length = length - ((location == 0) ? 0 : location + 1);
[self deleteCharactersInRange:spaceRange];
}
}
// This method donated by Robert Todd Thomas
- (void) trimSpaces
{
[self trimLeadSpaces];
[self trimTailSpaces];
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.