NSRange的定义 typedef struct _NSRange { NSUInteger location; NSUInteger length; } NSRange; NSRange是一个结构体 NSString *homebrew = @"Imperial India Pale Ale (IPA)"; // Starting at position 25, get 3 characters NSRange [homebrew substringWithRange:range]); 搜索字符串: NSString *homebrew = @"Imperial India Pale Ale (IPA)"; NSRange NSStringFromRange()方法,将一个NSRange返回一个NSString。 而另外一个函数NSRangeFromString()则是将NSString转换为NSRange 下面这个例子将从后向前反向搜索字符串: NSString *homebrew = @"Imperial India
如果你要获取一个字符串或者一个数组中的一个子集,那么使用NSRange会很方便的定义这个子集。 NSRange定义 Declaration: typedef struct _NSRange { NSUInteger location; NSUInteger length; } NSRange ; 创建NSRange的方法定义 Declaration: NSRange NSMakeRange ( NSUInteger loc, NSUInteger len ); 例如获取一个数组的一个子集 : NSRange range = NSMakeRange(0, 5); NSArray *subArray = [self.states subarrayWithRange:range
to specified type 'NSRange?' (aka 'Optional<_NSRange>') // 就是上面guard那句 产生的range的类型是:Range<String.Index>? // 而下面的addAttribute那句 添加.link的value需要的类型是:NSRange? 和 '完整字符串' 创建 NSRange? , 如下: let convertedRange = NSRange(range, in: attributedString.string) // NSRange?
options:(NSStringCompareOptions)mask range:(NSRange)searchRange; //11.搜索(指定字符串,条件,范围,本地化) - (NSRange :(NSCharacterSet *)searchSet; //13.搜索(指定字符集合,条件) - (NSRange)rangeOfCharacterFromSet:(NSCharacterSet * - (NSRange)rangeOfComposedCharacterSequenceAtIndex:(NSUInteger)index; //16.用字符串的字符编码指定区域段查找位置 - (NSRange )range; //2.获取指定范围该行的范围 - (NSRange)lineRangeForRange:(NSRange)range; //////////分段////////// //3.指定范围 )range; //4.获取指定范围该段落的范围 - (NSRange)paragraphRangeForRange:(NSRange)range; //////////字符串分行,分段/////
)range; - (void)removeEntryWithKey:(M13GenericType(KeyType, id<NSCopying>))key inRange:(NSRange)range (NSDictionary<KeyType, ObjectType> *) *)orderedEntries inRange:(NSRange)range2; - (void)replaceEntriesInRange:(NSRange)range withEntriesFromOrderedDictionary:(M13OrderedDictionary M13Generics(KeyType, ObjectType) *)dictionary inRange:(NSRange)range2; - (void) replaceEntriesInRange:(NSRange)range withObjectsFromArray:(NSArray M13Generics(ObjectType) *
- (NSRange)rangeOfString:(NSString *)searchString options:(NSStringCompareOptions)mask range:(NSRange)rangeOfReceiverToSearch searchString 这个参数是我们需要查找的字符串 mask typedefNS_OPTIONS NSCaseInsensitiveSearch 和 NSAnchoredSearch }; rangeOfReceiverToSearch 需要搜索在源字符串所在的范围 例子方法 - (NSRange (BOOL)isEqualTrue:(NSString *)findString atIndedx:(NSUInteger)index compareRange:(NSRange )compareRange { NSRange findRange = [self rangeOfString:findString
NSRangeException NSMutableRLEArray objectAtIndex:effectiveRange:: Out of bounds 二·初步分析 报错的超类属于NSRangeException -> NSRange { NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:string]; NSRange range = NSMakeRange(0, attrStr.length); } 回到第一点的NSRangeException 可以定位到 NSRange range = NSMakeRange ; NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:string]; NSRange } NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:string]; NSRange
NSUInteger)index concat(string) - (NSString *)stringByAppendingString:(NSString *)aString indexOf(string) - (NSRange )rangeOfString:(NSString *)aString lastIndexOf(string) - (NSRange)rangeOfString:(NSString *)aString options componentsSeparatedByString:(NSString *)separator substring(startIndex) - (NSString *)substringWithRange:(NSRange
for (TFHppleElement *tmp in _arry)
{
NSString * string =[tmp raw];
NSRange range;
// NSRange range2;
range = [string rangeOfString:@"
"];
string arry
{
for (TFHppleElement *tmp in _arry)
{
NSString * string =[tmp raw];
NSRange range;
NSRange range2;
range = [string rangeOfString:@""];
string = [string
textColor; 设置文本颜色 @property(nonatomic) NSTextAlignment textAlignment; 设置文本对齐模式 @property(nonatomic) NSRange property(nonatomic,copy) NSDictionary *typingAttributes; 设置属性字符串文本属性字典 - (void)scrollRangeToVisible:(NSRange (UITextView *)textView; 结束编辑时触发的方法 - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange textView; 选中内容改变触发的方法 - (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange
\]" //表情匹配 [爱心] 富文本是由原始字符串经过一系列的正则匹配到目标字符串后,再经过一系列的字符串高亮、删除、替换等处理得到的 注意:每一个匹配项完成字符串处理后可能会改变原有字符串的NSRange 最大字符 截取位置 var cutoffLocation = KTitleLengthMax //图标+描述 替换HTTP链接 let urlRanges:[NSRange attributedString.length) //图片替换表情文字 attributedString.replaceCharacters(in: NSRange matches(in:title, options:[], range: NSRange(location: 0, length: NSAttributedString(string: title).length )) // 2.遍历结果 数组 var ranges = [NSRange]() for res in results!
NSLog(@”%@”,str); 输出结果:12hh4dlggghhdlrt 2.通过range分割字符串 NSString *str=@”0123456&my_type=\”dlrthh “; NSRange = [str substringToIndex:range.location]; NSLog(@”%@”,subStr); 输出结果:0123456 3.在某个range中查找字符串 – (NSRange )rangeOfString:(NSString *)searchString options:(NSStringCompareOptions)mask range:(NSRange)searchRange 例如 Foo2.txt < Foo7.txt < Foo25.txt NSString *str=@”0123456&my_type=\”dlrthhkkll\” “; NSRange range 之后的range range.location += range.length; range.length = [str length] – range.location; NSRange
Foundation Kit基础知识 1.范围作用 NSRange typedef struct _NSRange { unsigned int location; unsigned int length ; } NSRange; 使用:location是开始位置,length是元素个数;通常在字符串范围或者数组使用 创建NSRange 1.1)直接赋值给字段(range.location = 12
/在一定范围内 获取与给定元素相同的元素在数组中的最小下标值 - (NSUInteger)indexOfObjectIdenticalTo:(ObjectType)anObject inRange:(NSRange sortedArrayUsingSelector:(SEL)comparator; //获取数组一定范围的子数组 - (NSArray<ObjectType> *)subarrayWithRange:(NSRange //删除所有元素 - (void)removeAllObjects; //在一定范围内删除元素 - (void)removeObject:(ObjectType)anObject inRange:(NSRange )range; //替换一组元素 - (void)replaceObjectsInRange:(NSRange)range withObjectsFromArray:(NSArray<ObjectType > *)otherArray range:(NSRange)otherRange; //替换一组元素 - (void)replaceObjectsInRange:(NSRange)range withObjectsFromArray
retain) NSMutableString *mutableString; - (void)addAttribute:(NSString *)name value:(id)value range:(NSRange :(NSString *)name range:(NSRange)range; - (void)replaceCharactersInRange:(NSRange)range withAttributedString ; - (void)appendAttributedString:(NSAttributedString *)attrString; - (void)deleteCharactersInRange:(NSRange - (void)endEditing; @end 其中常用的: 为某一范围内文字设置多个属性 - (void)setAttributes:(NSDictionary *)attrs range:(NSRange - (void)addAttributes:(NSDictionary *)attrs range:(NSRange)range; 移除某范围内的某个属性 - (void)removeAttribute
4、分页计算 分页计算的核心是拿到NSAttributedString和pageSize,按照页面大小进行排版,分别得到每页的字符串范围,最终以NSRange的方式返回,举例: ( "NSRange : {0, 34}", "NSRange: {34, 36}", "NSRange: {70, 40}", "NSRange: {110, 39}", "NSRange: {149, 35}", "NSRange: {184, 40}", "NSRange: {224, 37}", "NSRange: {261, 38}", "NSRange 表示放字符直到区域填满 CFRange visiableRange = CTFrameGetVisibleStringRange(frameRef); // 获取当前可见的字符串区域 NSRange
, 22, nil) 14 string.addAttribute(kCTFontAttributeName as String, value:font, range:NSRange(location , 14, nil) 22 string.addAttribute(kCTFontAttributeName as String, value:fontValue, range: NSRange( 24 string.addAttribute(kCTUnderlineStyleAttributeName as String, value:NSNumber(value:1), range: NSRange
position){ if (text.length > _maxLength){ NSRange rangeIndex = [text rangeOfComposedCharacterSequenceAtIndex maxLength == 1){ textField.text = @""; }else{ NSRange
模式的方法: - (void)enumerateMatchesInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange 将所有匹配的结果返回 - (NSArray *)matchesInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange - (NSUInteger)numberOfMatchesInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange )range; 这个方法直接返回匹配到得范围,NSRange。 - (NSRange)rangeOfFirstMatchInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange
NSString *str0 = @"中文my name is xuanyusong"; NSString *temp = @"is"; NSRange ons:<#(NSStringCompareOptions)#> range:<#(NSRange)#> stringByReplacingOccurrencesOfString:(NSString * )withString:(NSString *) options:(NSStringCompareOptions) range:(NSRange)