/*! @header ECStringUtils @abstract Module of Encore @availability OS X, GNUstep @copyright 2004, 2005, 2006 Oliver Langer Author: Oliver Langer This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA <pre> ------------------------------------------------------------------------- Modification history 05.02.06 ola initial version 22.08.06 ola license changed ------------------------------------------------------------------------- </pre> */ #include <Encore/ECStringUtils.h> #include <Encore/ECExceptions.h> #include <Encore/ECMemory.h> @implementation NSString (ECStringUtils) - (NSArray *) splitStringUsingDelimiter: (NSString *) delimiter { NSMutableArray *toReturn = [[NSMutableArray alloc] init]; NSScanner *scanner; NSString *nextSubString; BOOL delimFound; BOOL contentAvailable; if( nil == delimiter ) { [[[ECIllegalArgumentException alloc] initWithArgumentInfo: @"ECStringUtils::splitStringUsingDelimiter:"\ " Parameter delimiter equals nil!"] raise]; } EC_AUTORELEASEPOOL_BEGIN scanner = [[[NSScanner alloc] initWithString: (NSString *) self] autorelease]; [scanner setCharactersToBeSkipped: nil]; do { contentAvailable = [scanner scanUpToString: delimiter intoString: &nextSubString]; if( contentAvailable ) { [toReturn addObject: nextSubString]; } else { [toReturn addObject: @""]; } /* skip delimiter: */ delimFound = [scanner scanString: delimiter intoString: NULL]; } while( delimFound ); EC_AUTORELEASEPOOL_END return toReturn; } @end