68

有没有一种简短的方法可以说“整个字符串”而不是输入:

NSMakeRange(0, myString.length)]

这种代码中最长的部分是最不重要的似乎很愚蠢(因为我通常想在整个字符串中搜索/替换)......</p>

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

6 回答 6

47

功能?分类法?

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

[myString replaceOccurrencesOfString:@"replace_me"
                          withString:replacementString
                             options:NSCaseInsensitiveSearch
                               range:[myString fullRange]];
于 2013-02-25T08:03:46.433 回答
22

Swift 4+,对NSRegularExpression和有用NSAttributedString

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

    func range(from nsRange: NSRange) -> Range<String.Index>? {
        return Range(nsRange, in: self)
    }
}
于 2019-05-31T08:44:23.520 回答
20

从来没听说过。但是您可以轻松添加一个NSString类别:

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

@implementation NSString (MyRangeExtensions)
- (NSRange)fullRange {
  return (NSRange){0, self.length};
}
于 2013-02-25T08:03:37.650 回答
15

迅速

NSMakeRange(0, str.length)

或作为extension

extension NSString {
    func fullrange() -> NSRange {
        return NSMakeRange(0, self.length)
    }
}
于 2015-08-25T18:17:35.830 回答
7

斯威夫特 2:

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

如在

let swiftRange = "abc".fullRange

或者

let nsRange = "abc".fullRange.toRange
于 2016-01-01T23:41:11.343 回答
6

这不是更短,但是...哦,好吧

NSRange range = [str rangeOfString:str];
于 2013-02-25T08:10:01.363 回答