 |
 |
rangeOfString: in Obj-C
|
 |
|
 |
|
Senior User
Join Date: Jun 2002
Location: UK
Status:
Offline
|
|
How do I implement rangeOfString: and stuff?
I need to find if a word exists in a string AND get a previous word to the match.
Heeeelp 
|
|
|
| |
|
|
|
 |
|
 |
|
Forum Regular
Join Date: Oct 2001
Location: Sweden
Status:
Offline
|
|
This should work
Code:
@implementation NSString (MySearchAdditions)
-(NSString*)wordBeforeString:(NSString*)searchString
{
NSRange searchRange, foundRange, resultRange;
unsigned int precedingWsEnd, followingWsStart;
foundRange = [self rangeOfString:searchString];
if ((foundRange.length == 0) ||
(foundRange.location == 0))
{
// searchString wasn't found or it was found first in the string
return @"";
}
// start search before the found string
searchRange = NSMakeRange(0, foundRange.location);
// use whitespaceAndNewlineCharacterSet as a delimiter between words
foundRange = [self rangeOfCharacterFromSet:[NSCharacterSet whitespaceAndNewlineCharacterSet] options:NSBackwardsSearch range:searchRange];
followingWsStart = foundRange.location;
// search before the whitespace
searchRange = NSMakeRange(0, foundRange.location);
foundRange = [self rangeOfCharacterFromSet:[NSCharacterSet whitespaceAndNewlineCharacterSet] options:NSBackwardsSearch range:searchRange];
if (foundRange.length == 0)
{
// no whitespace was found before searchString
precedingWsEnd = 0;
} else {
precedingWsEnd = foundRange.location + foundRange.length;
}
resultRange = NSMakeRange(precedingWsEnd, followingWsStart - precedingWsEnd);
return [self substringWithRange:resultRange];
}
@end
|
|
|
| |
|
|
|
 |
|
 |
|
Senior User
Join Date: Jun 2002
Location: UK
Status:
Offline
|
|
THANKS A MILLION!!!!!!!!!
I'M GOING TO TEST THIS OUT RIGHT AWAY 
|
|
|
| |
|
|
|
 |
 |
|
 |
|
|
|
|
|

|
|
 |
Forum Rules
|
 |
 |
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
|
HTML code is Off
|
|
|
|
|
|
 |
 |
 |
 |
|
 |