------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
一、NSRange
1.NSRange定义
typedef struct_NSRange
{
NSUInteger location;
NSUInteger length;
} NSRange;
location是在行列中的起始位置(基于零点)而length是行列中的条目个数。NSUInteger只是单纯的一个无符号的值,它支持32位和64位系统。
2.一般操作
// @"i love oc" // love的范围
//NSRange r1 = {2, 4}; // 不用
//NSRange r2 = {.location = 2, .length = 4};// 不用
//NSRange r3 = NSMakeRange(2, 4); // 掌握
NSString *str = @"i love oc";
// 查找某个字符串在str中的范围
// 如果找不到,length=0,location=NSNotFound==-1
NSRange range = [str rangeOfString:@"java"];
NSLog(@"loc = %ld, length=%ld", range.location, range.length);
3.NSPiont和CGPiont
struct CGPoint {
CGFloat x;
CGFloat y;
};
typedef struct CGPoint CGPoint;
CGPoint p1 = NSMakePoint(10, 10);
NSPoint p2 = CGPointMake(20, 20);// 最常用
4.NSSize和CGSize
struct CGSize {
CGFloat width;
CGFloat height;
};
NSSize s2 = NSMakeSize(100, 50);
CGSize s3 = NSMakeSize(200, 60);
5.NSRect和CGRect
struct CGRect {
CGPoint origin;
CGSize size;
};
typedef struct CGRect CGRect;
CGRect r1 = CGRectMake(0, 0, 100, 50);
CGRect r2 = { {0, 0}, {100, 90}};
CGRect r3 = {p1, s2};
二、NSString和NSMutableString
NSString : 不可变字符串
1.创建
1)类方法:+(id)stringWithString:字符串。
NSString *s2 = [[NSString alloc] initWithString:@"jack"];
2)类方法:+(id)stringWithFormat:字符串、格式控制符。
NSString *s3 = [[NSString alloc] initWithFormat:@"age is %d", 10];
3)最直接的方法:NSString *str = @"i am a getal man";
4 ) 从文件中得到NSString
NSString *s5 = [[NSString alloc] initWithContentsOfFile:@"/Users/apple/Desktop/1.txt" encoding:NSUTF8StringEncoding error:nil];
5)C字符串 --> OC字符串
NSString *s4 = [[NSString alloc] initWithUTF8String:"jack"];
OC字符串 --> C字符串
const char *cs = [s4 UTF8String];
6)从URL中得到NSString
NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/1.txt"];
NSString *s6 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
2.求字符串长度:length方法。
[str length]
3.字符串比较方法。
1)全方位比较、比较字符串是否相同。
-(BOOL) isEqualToString:
如:[字符串对象1 isEqualToString:字符串对象2];
2)-(枚举类型的值)compare:字符串。
注意:此方法比较的是:字符串中每个字母的ASCII码值。
该方法的返回值类型是:三个枚举类型的值,切记:不事BOOL值。
返回的三个枚举值为:
NSOrderedAscending:主调小于被调。
NSOrderedSame:相同。
NSOrderedDescending:主调大于被调。
如:[字符串1 compare:字符串2];注意:不能直接用if判断哈。
得这样:if ([字符串1 compare:字符串2] == NSOrderedSame)
3)带多个参数的compare方法。
参数为一下三种情况:
1)NSCaseInsensitiveSerch:不区分大小写(常用于不区分大小写时)。
2)NSNumberSerch:按字符串长度比较(常用于数字字符串之间的比较)。
3)NSLiteralSerch:区分大小写。
4,判断字符串的开头结尾。
-(BOOL)hasPrefix:字符串1。是否以字符串1开头?
-(BOOL)hasSuffix:字符串2。是否以字符串2结尾?
5、字符串查找。
-(NSRange)rangeOfString:字符串3。
注意;返回的是范围结构体。
6、大小写转换。
-(NSString*)uppercaseString。转换成大写。
-(NSString*)lowercaseString。转换成小写。
注意:转换后本来的字符串不会变化,它是通过返回值给出的结果。
NSMutableString : 可变字符串
NSMutableString *s1 = [NSMutableString stringWithFormat:@"my age is 10"];
// 拼接内容到s1的后面
[s1 appendString:@" 11 12"];
// 获取is的范围
NSRange range = [s1 rangeOfString:@"is"];
[s1 deleteCharactersInRange:range];
NSString *s2 = [NSString stringWithFormat:@"age is 10"];
NSString *s3 = [s2 stringByAppendingString:@" 11 12"];