Подтвердить что ты не робот

Ярлык для создания NSRange для всей длины NSString?

Есть ли короткий способ сказать "целая строка", а не печатать:

NSMakeRange(0, myString.length)]

Кажется глупым, что самая длинная часть этого типа кода является наименее важной (потому что я обычно хочу искать/заменять в пределах всей строки)...

[myString replaceOccurrencesOfString:@"replace_me"
                          withString:replacementString
                             options:NSCaseInsensitiveSearch
                               range:NSMakeRange(0, myString.length)];
4b9b3361

Ответ 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