黑马程序员技术交流社区
标题: 数字与字符串 [打印本页]
作者: wdcew 时间: 2015-8-19 23:05
标题: 数字与字符串
因为int型,float型都是基本数据类型,并非对象,并不能对它们发送消息对他们发送消息,因此需要对此数据类型进行出创建对象:
方法一:
NSNumber *myNumber, *floatNumber, *intNumber;
intNumber = [NSNumber numberWithInteger: 100];
myInt = [intNumber integerValue];
NSLog(@"%li",(long) myInt);
myNumber = [NSNumber numberWithLong: 0xabcdef];
NSLog(@"%lx", [myNumber longValue]);
myNumber = [NSNumber numberWithChar: 'x'];
NSLog(@"%c", [myNumber charValue]);
floatNumber = [NSNumber numberWithFloat: 123.23];
NSLog(@"%g", [myNumber floatValue]);
myNumber = [NSNumber numberWithDouble: 1.23e+3];
NSLog(@"%lg", [myNumber doubleValue]);
方法二:
NSNumber * myNumber = [[NSNumber alloc] initWithInt:100];
两种方法的差别在于使用alloc版本的创建的对象需要自己 releas 或是加入releasepool中!
方法三:快速建立基本数据类型对象
//也允许通过@表达式创建数字对象的!
intNumber = @100;
//检索实例的方法:
myInt = [intNumber integerValue];
//检索实例的方法:
myNumber = @0xabcdf;
NSLog(@"%lx", [myNumber longValue]);
//检索实例的方法:
myNumber = @'x';
NSLog(@"%c", [myNumber charValue]);
//检索实例的方法:
floatNumber = @12.36;
NSLog(@"%g", [myNumber floatValue]);
//检索实例的方法:
myNumber = @123.34e+1;
NSLog(@"%lg", [myNumber doubleValue]);
2、字符串对象
1、字符串常量属于 NSConstantString类的常量字符串,对象NSConstanString类是NSString的子类。
2关于Description的描述方法:
3、关于一些不可变字符串的基本处理方法,现在读一些特殊的处理方法进行记录:
compareResult = [str1 compare: str2];
compare方法 会返回一个NSComparisonResult枚举类型的变量如下:
enum {
NSOrderedAscending = -1,
NSOrderedSame,
NSOrderedDescending
};
typedef NSInteger NSComparisonResult;
//将一个字符串复制到另一个字符串的末尾
str2 = [str1 stringByAppendingString:str1];
将生成一个新的字符串变量(内存地址),不会影响 str1指向的字符串变量
1.索引字符串使用方法:
res = [str1 substringWithRange:NSMakeRange(5, 6)];
其中,这个方法的参数是一个Range结构体类型的变量,使用NSMakeRange(int x, int y)返回一个 变量,其中 Range结构体如下:
typedef struct _NSRange {
NSUInteger location;
NSUInteger length;
} NSRange;
2./从一个字符串中查找一个字符串
subRange = [str1 rangeOfString: @"string A”];
也是返回Range结构体类型的变量,如果找不到字符串,则是返回:subRange.location == NSNotFound
3)可变字符串对象的建立与操作
1.从不可变字符串变为可变字符串的方法:
mstr = [NSMutableString stringWithString: str1];
2 查找字符串,将其删除
// 查找然后将其删除
// 返回的时查找字符的 Range类型的变量的位置
subrange = [mstr rangeOfString: @"string B and "];
、、
if (subrange.location != NSNotFound) {
[mstr deleteCharactersInRange:subrange];
NSLog(@"%@", mstr);
}
返回的时查找字符的 Range类型的变量的位置,其中,方法deleteCharactersInRange:(Range) 参数依旧是一个Range结构体类型的变量
3.查找和替换所有匹配项:
search = @"a";
replace = @"X";
subrange = [mstr rangeOfString: search];
while(subrange.location != NSNotFound)
{
[mstr replaceCharactersInRange: subrange
withString: replace];
subrange = [mstr rangeOfString: search];
}
NSLog(@"%@", mstr);
方法:[mstr replaceCharactersInRange: subrange
withString: replace];
需要提供 被替换字符串对象的Range类型的位置变量,以及替换的字符串对象replace,同时,自会覆盖被替换的字符串,其他字符完好无损!!!
作者: 庞佳星 时间: 2015-8-20 11:14
靠!!!!太吊了!!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |