web-dev-qa-db-ja.com

NSStringの全長に対してNSRangeを生成するショートカット?

入力するのではなく、「文字列全体」と言う簡単な方法はありますか?

NSMakeRange(0, myString.length)]

この種のコードの最も長い部分が最も重要でないことはばかげているようです(通常、文字列全体を検索/置換したいので)...

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

関数?カテゴリー方法?

- (NSRange)fullRange
{
    return (NSRange){0, [self length]};
}

[myString replaceOccurrencesOfString:@"replace_me"
                          withString:replacementString
                             options:NSCaseInsensitiveSearch
                               range:[myString fullRange]];
39
Josh Caswell

私が知っていることではありません。ただし、NSStringカテゴリを簡単に追加できます。

@interface NSString (MyRangeExtensions)
- (NSRange)fullRange
@end

@implementation NSString (MyRangeExtensions)
- (NSRange)fullRange {
  return (NSRange){0, self.length};
}
19
BJ Homer

Swift

NSMakeRange(0, str.length)

またはextensionとして:

extension NSString {
    func fullrange() -> NSRange {
        return NSMakeRange(0, self.length)
    }
}
10
SwiftArchitect

これは短くはありませんが...

NSRange range = [str rangeOfString:str];
7
Odrakir

スイフト2:

extension String {
    var fullRange:Range<String.Index> { return startIndex..<endIndex }
}

のように

let swiftRange = "abc".fullRange

または

let nsRange = "abc".fullRange.toRange
5
Chris Conover

Swift 4 +、NSRegularExpressionおよびNSAttributedStringに便利

extension String {
    var nsRange : NSRange {
        return NSRange(self.startIndex..., in: self)
    }
}
2
vadian