Ярлык для создания NSRange для всей длины NSString?
Есть ли короткий способ сказать "целая строка", а не печатать:
NSMakeRange(0, myString.length)]
Кажется глупым, что самая длинная часть этого типа кода является наименее важной (потому что я обычно хочу искать/заменять в пределах всей строки)...
[myString replaceOccurrencesOfString:@"replace_me"
withString:replacementString
options:NSCaseInsensitiveSearch
range:NSMakeRange(0, myString.length)];
Ответы
Ответ 1
Функция? Метод категории?
- (NSRange)fullRange
{
return (NSRange){0, [self length]};
}
[myString replaceOccurrencesOfString:@"replace_me"
withString:replacementString
options:NSCaseInsensitiveSearch
range:[myString fullRange]];
Ответ 2
Не то, чтобы я знал. Но вы можете легко добавить категорию NSString
:
@interface NSString (MyRangeExtensions)
- (NSRange)fullRange
@end
@implementation NSString (MyRangeExtensions)
- (NSRange)fullRange {
return (NSRange){0, self.length};
}
Ответ 3
Это не короче, но... О, хорошо
NSRange range = [str rangeOfString:str];
Ответ 4
Swift
NSMakeRange(0, str.length)
или как extension
:
extension NSString {
func fullrange() -> NSRange {
return NSMakeRange(0, self.length)
}
}
Ответ 5
Swift 2:
extension String {
var fullRange:Range<String.Index> { return startIndex..<endIndex }
}
как в
let swiftRange = "abc".fullRange
или
let nsRange = "abc".fullRange.toRange