一.NSRange :表示相关事物的范围.
typedef struct _NSRange {
NSUInteger location;
NSUInteger length;
} NSRange;
- location 字段为该范围的起始位置
- length 字段为该范围内所含元素的个数 (从location开始算.(用数学1开始数) )
2.创建:
(1)直接给字段赋值
NSRange range;
range.location = 12;
range.length = 3;
(2)应用 C 语言的聚合结构赋值机制
NSRange range2 = {12,3};
NSRange range3 = {.location = 3,.length = 5};
(3)使用 NSRange.h类 提供的快捷函数 NSMakeRange
NSRange r4 = NSMakeRange(3, 3);
3.常用API:
1,从指定位置from开始(包含起始位置)到尾部
- (NSString *)substringFromIndex:(NSUInteger)from;
2,从字符串的开头一直截取到指定的位置to,不包含结束位置
- (NSString *)substringToIndex:(NSUInteger)to;
3,按照所给出的NSRange从字符串中截取子串
- (NSString *)substringWithRange:(NSRange)range;
4,字符串替换,用replacement替换target
- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement;
5.NSStringFromRange 可以将结构体转化成字符串,
NSRange range = NSMakeRange(4, 7);
例如: NSString *test2 = NSStringFromRange(range);
结果: {4, 7}
6.字符串截取:- (NSString *)substringWithRange:(NSRange)range;
NSString *str = @"<hello>tangFeng</hello>";
@">" loc+1
NSUInteger loc = [str rangeOfString:@">"].location + 1;
"t"得位置 7
@"</" loc
NSUInteger len = [str rangeOfString:@"</"].location - loc;
要截取的字符的长度 15 -7
入坑点:如果用<,位置就是0,
用</,遇到<就停止了,停止的位置为15。
不是/ /的位置16
构建 ruange (7,8)
NSRange r2 = NSMakeRange(loc, len);
截取
NSString *subStr = [str substringWithRange:r2];
二.NSPoint/NSRect/NSSize:
- NSPoint表示一个点
- NSSize表示大小
- NSRect表示一个矩形
注意:
NSPoint 实际上就是 CGPoint
NSRect 实际上就是 CGRect
NSSize 实际上就是 CGSize
NSPoint 主要用来描述一个点,坐标的原点为屏幕左上角。
比如一个坐标为(1,2)的点: NSPoint p = NSMakePoint(1,2);
或者:
NSPoint p;
p.x = 1;
p.y = 2;
或者:
NSPoint p = {1,2};
NSPointZero 代表原点(0,0)
NSSize 用来描述一个矩形大小区域,可以用来表示 UI 控件的尺寸
NSSize s=NSMakeSize(10, 15);NSSize其实就是CGSize
这种方式比较常见 CGSize s2=CGSizeMake(10, 15);
NSRect 用来描述一个矩形的位置和尺寸,
比如在原点画一个 20x20 大小的正方形:
NSRect myRect;
myRect.origin.x = 0;
myRect.origin.y = 0;
myRect.size.width = 20;
myRect.size.height = 20;
或者:
NSRect myRect = {0,0,20,20};
或者:
NSRect myRect = NSMakeReact(0,0,20,20);