I have an NSRange and need to break a string into two substrings on either side of this NSRange. How do I get an integer value (like the index) out of an NSRange?
Asked
Active
Viewed 4,737 times
2 Answers
4
NSRange
struct consists of two integers - the location
and the length
.
typedef struct _NSRange {
NSUInteger location;
NSUInteger length;
} NSRange;
It looks like location
and location+length
are the two expressions that you are looking for - the ranges for the left and right substring are as follows:
NSRange prefixRange = NSMakeRange(0, myRange.location);
NSUInteger pos =myRange.location+myRange.length;
NSRange suffixRange = NSMakeRange(pos, myString.length - pos);

Sergey Kalinichenko
- 714,442
- 84
- 1,110
- 1,523
0
I know this question is old, but in Swift 4 (and perhaps earlier) there are new upperBound
and lowerBound
convenience properties on NSRange
:
print(myRange) // Range: {13, 4}
range.lowerBound // 13
range.upperBound // 17
Hopefully that helps someone else.

Clifton Labrum
- 13,053
- 9
- 65
- 128