ios - ¿Atajo para generar un NSRange para toda la longitud de NSString?
objective-c (6)
Rápido
NSMakeRange(0, str.length)
o como una extension
:
extension NSString {
func fullrange() -> NSRange {
return NSMakeRange(0, self.length)
}
}
¿Hay una forma breve de decir "cadena completa" en lugar de escribir a máquina?
NSMakeRange(0, myString.length)]
Parece una tontería que la parte más larga de este tipo de código sea la menos importante (porque generalmente quiero buscar / reemplazar dentro de una cadena entera) ...
[myString replaceOccurrencesOfString:@"replace_me"
withString:replacementString
options:NSCaseInsensitiveSearch
range:NSMakeRange(0, myString.length)];
Swift 2:
extension String {
var fullRange:Range<String.Index> { return startIndex..<endIndex }
}
como en
let swiftRange = "abc".fullRange
o
let nsRange = "abc".fullRange.toRange
¿Función? Método de la categoría?
- (NSRange)fullRange
{
return (NSRange){0, [self length]};
}
[myString replaceOccurrencesOfString:@"replace_me"
withString:replacementString
options:NSCaseInsensitiveSearch
range:[myString fullRange]];
Esto no es más corto, pero ... bueno
NSRange range = [str rangeOfString:str];
No que yo sepa. Pero podría agregar fácilmente una categoría NSString
:
@interface NSString (MyRangeExtensions)
- (NSRange)fullRange
@end
@implementation NSString (MyRangeExtensions)
- (NSRange)fullRange {
return (NSRange){0, self.length};
}
Y cuando necesitas NSRange
de String
en Swift 4:
NSRange(string.startIndex.encodedOffset ..< string.endIndex.encodedOffset)