c语言是字符串123变112233,Objective C学习第四节:OC里面的字符串和数值

//

小试牛刀吧

// 判断下面的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"]);

}

a4c26d1e5885305701be709a3d33442f.png

//牛刀小试【下面定义一个可变数组,用于存放多个字符串,替换掉一段话中的敏感词汇】

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);

下面是程序的输出结果:

a4c26d1e5885305701be709a3d33442f.png

(注:上面这段简单的代码后面到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];

好了,今天的分享到此结束了,祝大家学习愉快!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值