簡體   English   中英

為 NSString 的整個長度生成 NSRange 的快捷方式?

[英]Shortcut to generate an NSRange for entire length of NSString?

有沒有一種簡短的方法可以說“整個字符串”而不是輸入:

NSMakeRange(0, myString.length)]

這種代碼中最長的部分是最不重要的,這似乎很愚蠢(因為我通常想在整個字符串中搜索/替換)......

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

功能? 分類方法?

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

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

從來沒聽說過。 但是您可以輕松添加NSString類別:

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

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

Swift 4+ ,對NSRegularExpressionNSAttributedString有用

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

    func range(from nsRange: NSRange) -> Range<String.Index>? {
        return Range(nsRange, in: self)
    }
}

迅速

NSMakeRange(0, str.length)

或作為extension

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

這不是更短,而是......哦,好吧

NSRange range = [str rangeOfString:str];

斯威夫特 2:

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

let swiftRange = "abc".fullRange

要么

let nsRange = "abc".fullRange.toRange

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM