//
小试牛刀吧
// 判断下面的URL是否是以PNG结尾,如果是,将PNG修改为JPG
NSString* url =
@"http://png.lanou3g.com/index.png";
NSInteger urlLength = [url
length];
NSLog(@"%ld",(long)urlLength);
NSString* cut = @"hh";
//给cut一个初始值,不然编译的时候有警告。
NSString* png =
@"png";
for (int j =
0; j < urlLength; j++)
{
cut = [url
substringWithRange:NSMakeRange(urlLength-3,
3)];
}
BOOL same = [cut
isEqualToString:cut];
NSLog(@"%hhd",same);
if (same ==
1)
{
NSLog(@"%@",[url
stringByReplacingCharactersInRange:NSMakeRange(urlLength-3,
3)
withString:@"jpg"]);
}
//牛刀小试【下面定义一个可变数组,用于存放多个字符串,替换掉一段话中的敏感词汇】
NSArray* arr
= @[@"ass",
@"hole",
@"TMD", @"CNM",
@"SD",@"孬种",@"滚犊子"];
NSMutableString* dirtySpeak = [[NSMutableString alloc] initWithFormat:@"你TMD是个大孬种,快给我滚犊子!,走你ass"]; //初始化格式
for (int i =
0; i < [arr count];
i++) //count 是数组里面的一个方法,计算数组元素的个数.
{
[dirtySpeak replaceOccurrencesOfString:arr[i]
withString:@"xxx" options:1 range:NSMakeRange(0, [dirtySpeak
length])]; //这句话的意思是在dirtySpeak这个对象中从第一位字符开始查找,当发现这个对象中有类似arr[]这个数组中相同的字符串的时候,用“xxx”替换掉这个敏感字符串。option:这里面是一个枚举类型的变量。后面的range:是一个范围,指代我们需要替换位置的起点以及替换的范围。由于NSRanger是一个枚举类型,故我们可以定义一个枚举变量r,并给其成员变量赋值。但是个人习惯直接在里面进行枚举赋值,做起来很快。无需重新声明枚举变量,简化代码。
}
// NSRange r ;①
//可以直接将这个枚举变量r传入到range后面的参数中。
// r.location = 0;②
// r.length = dirtySpeak.length;③
NSLog(@"%@",dirtySpeak);
下面是程序的输出结果:
(注:上面这段简单的代码后面到UI阶段我们加入视图控制器就可以做成简易的”脏话“过滤器了,😄)
前面都是有关NSString的变换,下面我们再看看OC里面的数值类;
首先看看NSNumber这个类
作用:实现基本数据类型与OC对象类型的互相转换。
基本数据类型(in ,float
等)转换为NSNumber类型,NSNumber转换为基本数据类型。
小试牛刀:将3.14159,存储为NSNumber类型的对象,再将这个对象转换为基本数据类型。
NSLog(@"%@", [NSNumber numberWithFloat:3.1415926]); //numberWithFloat是一个类方法,直接由NSNumber类调用,实现基本数据类型到NSNumber类型的转化。
NSNumber* num = [NSNumber numberWithFloat:3.1415926]; //创建一个NSNumber的对象num
NSLog(@"%f",[numfloatValue]);//通过创建的对象调用floatValue方法,得到基本数据类型。
以上是基本数据类型与NSNumber类型转换的结果,其他基本数据类型雷同。
下面我们再看看NSValue:
功能:完成结构体和对象类型的互换。
结构体(NSRange)等转换为NSValue
NSValue转换为结构体(NSRange等)。
牛刀小试:定义一个结构体并实现其与NSValue类型的互换。
typedef
struct Student//定义一个学生类型的结构体
{
char
name[20];
char
gender;
int
age;
} Student;
Student stu
= {"Rephontil", 'f', 9}; //定义一个结构体变量并进行初始化
NSValue *pValue = [NSValue valueWithBytes:&stu objCType:@encode(Student)]; //这一步将结构体类型变量转换为NSValue类型变量。
//
注:不要纠结自定义结构体转出成的对象的打印结构
NSLog(@"%@",
pValue);
Student newStu = {""};//创建一个新的结构体变量
[pValue
getValue:&newStu];
printf("%s, %c, %d\n", newStu.name, newStu.gender, newStu.age); //实现了对象和结构体的互换
NSNumber
*myNumber,*floatNumber,*intNumber,*number1;
intNumber = [NSNumber
numberWithInteger:123];//创建integer类型对象
NSLog(@"%i",[intNumber integerValue]);
myNumber = [NSNumber
numberWithLong:0xababab];//创建long类型对象
NSLog(@"%lx",[myNumber longValue]);
myNumber = [NSNumber numberWithChar:'K'];//创建char类型对象
NSLog(@"%c",[myNumber charValue]);
floatNumber = [NSNumber
numberWithFloat:123.00]; //创建float类型对象
NSLog(@"%f",[floatNumber floatValue]);
myNumber = [NSNumber
numberWithDouble:112233e+15]; //创建double类型对象
NSLog(@"%lg",[myNumber doubleValue]);
if ([intNumber
isEqualToNumber:floatNumber] == YES
)//创建double类型对象
{
NSLog(@"值相等");
}
else
{
NSLog(@"值不相等");
}
if ( [intNumber compare:myNumber] ==
NSOrderedAscending)//比较两个对象的值大小
{
NSLog(@"左边的数字小");
}
else
{
NSLog(@"左边的数字大");
}
number1 = [[NSNumber alloc]
initWithInt:1000]; //初始化实例
NSLog(@"%d",[number1 intValueunsigned];
[number1 release];
好了,今天的分享到此结束了,祝大家学习愉快!