您的位置:首页 > 移动开发 > IOS开发

《ios_OC》字符串NSString,数组NSArray,NSNumber数值与字符串的转换

2015-09-08 21:18 393 查看
一:字符串NSString

(一)不可变字符串NSString:增删查改的实现:

// c语言中字符串是由char(ASCII)字符组成

char sex='1';

char *sex1="hjkk";

char *sex2[2]={"male","famle"};

printf("%s",sex2[1]);

//oc里面字符串是由unichar(unicode)码组成

//不可变字符串NSString,长度内容都是不可变的

//1\创建一个常量字符串,字面量,也就是直接把值赋给它,语法糖

NSString *str=@"哈哈哈哈哈";

NSLog(@"%@",str);

//2\创建一个格式化的字符串,并实现字符串的拼接

{

NSString *str1=[[NSString alloc]initWithFormat:@"%@师傅被抓走了",str];

NSLog(@"%@",str1);

NSString *str2=[NSString stringWithFormat:@"%@师傅又被抓走了",str];

NSLog(@"%@",str2);

NSString *str3=[NSString stringWithFormat:@"%@ %@",str1,str2];

NSLog(@"%@",str3);

//通过另外一个字符串创建字符串

NSString *str4=[[NSString alloc]initWithString:str3];

NSLog(@"%@",str4);

}

// NSString *str5=[[NSString alloc]initWithString:@"哈哈哈哈"];//建议不这么写,因为等价于 NSString *str5=@"哈哈哈哈"

//一:字符串的截取。字符串的常用方法,无论怎样,本来的字符串都不会发生变化

{

//1)、字符串的截取substringFromIndex,表示从某个字符开始截取字符串

NSString *str11=@"helloworld";

NSString *str12=[str11 substringFromIndex:5];//表示从字符串的第五个字符开始截取剩下的字符串,从零开始的

NSLog(@"%@",str12);

//2)方法substringToIndex从开始到哪里进行截取

NSString *str13=[str11 substringToIndex:5];//表示从开始截取到第5个字符串,但不要第五个,从零开始

NSLog(@"%@",str13);

//3)方法substringWithRange:范围来截取

NSRange range={5,4};//第一个表示开始的地方,第二值表示取多长,但不可以超过剩下的长度

NSString *str14=[str11 substringWithRange:range];

NSLog(@"%@",str14);

}

//二:字符串的拼接。stringByAppendingString

{

NSString *str11=@"helloworld";

NSString *str21=[str11 stringByAppendingString:@"你好!"];

NSLog(@"%@",str21);

}

//三:字符串的比较内容是否一样:格式:“字符串1 isEqualToString:字符串2”返回值是bool类型的

{

NSString *str11=@"helloworld";

NSString *str21=[str11 stringByAppendingString:@"你好!"];

bool result= [str11 isEqualToString:str21];

if (result) {

NSLog(@"两个字符串一样");

}else

{

NSLog(@"不一样");

}

//字符串的比较

NSComparisonResult comResult=[str11 compare:str21];

switch (comResult) {//switch语句是选择开关语句

case NSOrderedAscending:

NSLog(@"str11比str21小");

break;

case NSOrderedSame:

NSLog(@"str11和str21一样大小");

break;

case NSOrderedDescending:

NSLog(@"str11比str21大");

default:

break;

}

}

//四:判断字符串的开头和结尾

{

NSString *str41=@"jane.avi";

//(1)是否以某某开头

bool result41= [str41 hasPrefix:@"jane"];

if (result41) {

NSLog(@"珍妮");

}else{

NSLog(@"不是珍妮");

}

//(2)是否以某某结尾,可以用于判断是否是图片、电影的后缀

bool result42=[str41 hasSuffix:@".avi"];

if (result42) {

NSLog(@"以avi结尾的,这是一部电影");

}else{

NSLog(@"不是以avi结尾的");

}

//(3)判断是否包含某一个字符串

bool result43=[str41 containsString:@"jan"];

if (result43) {

NSLog(@"包含了jan");

}else

{

NSLog(@"不包含jan");

}

}

//五:大小写转换

{

NSString *str51=@"Helloword candy! i like ios";

//全部转换成大写的

NSString *str52=[str51 uppercaseString];

NSLog(@"%@",str52);

//全部变成小写

NSString *str53=[str51 lowercaseString];

NSLog(@"%@",str53);

//每个单词的首字母大写

NSString *str54=[str51 capitalizedString];

NSLog(@"%@",str54);

}

//六:c语言字符串和oc语言的字符串的相互转换

{

//将c字符串转换成oc字符串

NSString *str61=[[NSString alloc]initWithUTF8String:"呵呵呵"];

NSLog(@"%@",str61);

//将oc语言的字符串转换成c语言的字符串

const char *cStr=[str61 UTF8String];

printf("%s\n",cStr);

}

//七、字符串的替换

{

//(1)根据指定进行替换

NSString *str71=@"helloword helloword";

NSString *str72=[str71 stringByReplacingOccurrencesOfString:@"word" withString:@"逗比"];

//把前面的所有的word换成后面的“逗比”字符串

NSLog(@"%@",str72);

//(2)根据范围进行替换,NSMakeRange(5, 5)这是表示从第五个开始替换掉原来的那五个字符,替换的字符串长度没有限制的,如@"hahahahah"并不是五个字符

NSString *str73=[str71 stringByReplacingCharactersInRange:NSMakeRange(5, 5) withString:@"hahahahah"];

NSLog(@"%@",str73);

}

(二)可变字符串NSMutablestring

//可变字符串 NSMutableString都是不可变字符串的子类,则,上面不可变字符串的方法,都可以继承使用,继承于NSString

//可变字符串的初始化:

NSMutableString *mstr=[[NSMutableString alloc]initWithString:@"ione"];

//1/插入字符串,在本身去插入,没有返回值

[mstr insertString:@"Ph" atIndex:1];

NSLog(@"%@",mstr);

//2/删除字符串,范围删除NSMakeRange(4, 2),下标为4的开始删除2个字符位置

[mstr deleteCharactersInRange:NSMakeRange(4, 2)];

NSLog(@"%@",mstr);

//3、替换,操作的也是本身

[mstr replaceCharactersInRange:NSMakeRange(1, 2) withString:@"ha"];

NSLog(@"%@",mstr);

//4\拼接

[mstr appendString:@"6s"];

NSLog(@"%@",mstr);

//5、求字符串的长度

//mstr.length

//课上练习:给定一个图片的名字,判断字符串是否以“png”结尾,如果是换成jpg,如果不是则拼接“.jpg”

NSMutableString *mstr1=[[NSMutableString alloc]initWithString:@"xxxxxxpng"];

bool result1= [mstr1 hasSuffix:@"png"];//hasSuffix判断结尾是不是某某

if (result1) {

//方法一:不严谨,png开头

// NSRange range=[mstr1 rangeOfString:@"png"];//直接计算png的范围

// [mstr1 replaceCharactersInRange:range withString:@"jpg"];//替换

//方法二:更加严谨,在尾部计算3位出来的方法,mstr1.length-3计算换得开始位置

[mstr1 replaceCharactersInRange:NSMakeRange(mstr1.length-3,3) withString:@"jpg"];

}

else{

[mstr1 appendString:@".jpg"];//拼接

}

NSLog(@"%@",mstr1);

Book.h文件

@interface Book : NSObject

{

NSString *_name;

CGFloat _price;

}

//setter\getter方法

-(void)setName:(NSString *)name;

-(NSString *)name;

-(void)setPrice:(CGFloat)price;

-(CGFloat)price;

//初始化方法

-(instancetype)initWithName:(NSString *)name price:(CGFloat)price;

////信息打印

//-(NSString *)description;//可以不用声明

@end

Book.m文件

#import "Book.h"

@implementation Book

-(void)setName:(NSString *)name

{

_name=name;

}

-(NSString *)name

{

return _name;

}

-(void)setPrice:(CGFloat)price

{

_price=price;

}

-(CGFloat)price

{

return _price;

}

-(instancetype)initWithName:(NSString *)name price:(CGFloat)price

{

_name=name;

_price=price;

return self;

}

-(NSString *)description

{

NSString *str=[[NSString alloc]initWithFormat:@"书名:%@,价格:%.2f" ,_name,_price] ;

return str;

}

@end

二:数组NSArray(分为可变数组NSMutableArray和不可变数组NSArray)

//不可变数组NSArray

{

//数组里面只能存储对象类型的数据,直接或者间接继承于NSObject的类创建出来的对象

//1、创建数组如下,跟c语言差不多

NSArray *arr=[[NSArray alloc]initWithObjects:@"a",@"c",@"u",@"sge", nil];//nil是数组结束的标志

//2、通过字面量创建

NSArray *arr1=@[@"ios",@"android",@"windows"];

// //c语言里面的创建字符串的方法,要求存的东西都是一个类型的,但oc里面则可以不一样的

// int a[3]={1,2,3};

//3、通过下标访问数组里面的元素

NSLog(@"%@",arr1[1]);

//等效与下面,通过下标“objectAtIndex:1”,来获取对应的元素,这种方法更加严谨

NSLog(@"%@",[arr1 objectAtIndex:1]);

//通过元素来获取下标

NSInteger i=[arr1 indexOfObject:@"ios"];

NSLog(@"%ld",i);

//4、通过for循环来访问数组元素,遍历

for(int i=0;i<arr1.count;i++){

NSLog(@"%@",arr1[i]);

}

//5、要修改数组,则需要可变 " NSMutableArray"数组才可以,并且不可以用字面的写法

// NSMutableArray *arr1=@[~~~~];//错误写法

//正确写法

NSMutableArray *arr2=[[NSMutableArray alloc]initWithObjects:@"ios", @"android", @"windows", nil];

//可以由不可变数组,改变成可变数组

NSArray *marr=@[@"1",@"2",@"3"];

NSMutableArray *arr3=[[NSMutableArray alloc]initWithArray:marr];

for(int i=0;i<arr1.count;i++){

NSLog(@"%@",arr3[i]);

}

//6、添加元素,添加在数组的最后面

[arr2 addObject:@"nihao"];

NSLog(@"%@",arr2);

//7、插入元素,可以指定位置来插入元素

[arr2 insertObject:@"zhubajie" atIndex:2];

NSLog(@"%@",arr2);

//8、删除元素,指定元素删除

// [arr2 removeObject:@"ios"];

// NSLog(@"%@",arr2);

//9、根据下标来删除元素

// [arr2 removeObjectAtIndex:1];

// NSLog(@"%@",arr2);

//10、替换元素(根据下标进行替换)

// [arr2 replaceObjectAtIndex:1 withObject:@"linux"];

// NSLog(@"%@",arr2);

//11、交换两个元素的位置(交换的是两个元素的下标)

// [arr2 exchangeObjectAtIndex:0 withObjectAtIndex:2];

// NSLog(@"%@",arr2);

//

//12、判断数组里面是否包含某一个元素,有返回值,bool类型的

bool result=[arr2 containsObject:@"ios"];

NSLog(@"%d",result);

//课上练习

Book *book1=[[Book alloc]initWithName:@"语文书" price:9.8];

Book *book2=[[Book alloc]initWithName:@"数学书" price:20];

Book *book3=[[Book alloc]initWithName:@"英语书" price:10.3];

NSLog(@"%@",book3);//打印的是地址,但写了description方法后就可以打印全部信息

// NSLog(@"%@",book3.name);//打印的是书名,用.点语法,但我想要打印book3的全部信息

//创建可变数组来存这三个元素,可以提高内存的使用效应,后面的3是元素个事

NSMutableArray *bookArr=[[NSMutableArray alloc]initWithCapacity:3];

//添加书籍

[bookArr addObject:book1];

[bookArr addObject:book2];

[bookArr addObject:book3];

//打印一下信息:

for(int i=0;i<bookArr.count;i++){

NSLog(@"%@",bookArr[i]);

}

NSLog(@"|");

//删除元素

// [bookArr removeObject:book3];

// for(int i=0;i<bookArr.count;i++){

// NSLog(@"%@",bookArr[i]);

// }

// NSLog(@"|");

//根据书名查找书籍,并修改书籍价格

for(int i=0;i<bookArr.count;i++){

if([[bookArr[i] name]isEqualToString:@"语文书"]){

[bookArr [i] setPrice:99];

}

}

for(int i=0;i<bookArr.count;i++){

NSLog(@"%@",bookArr[i]);

}

}

三:NSNumber数值与字符串的转换

//NSNumber,把数字变成对象字符串

NSNumber *num1=[[NSNumber alloc]initWithInt:123];

NSLog(@"%@",num1);

//另外一种写法()括号里面可以是任何类型都可以

NSNumber *num2=@(123);

NSLog(@"%@",num2);

NSNumber *num3=@(YES);

NSLog(@"%@",num3);

NSNumber *num4=@(4.24);

NSLog(@"%@",num4);

//字符串类型转换成整型的

int a=[num2 intValue];

BOOL b=[num3 boolValue];

float c=[num4 floatValue];

NSLog(@"a=%d",a);

NSLog(@"b=%d",b);

NSLog(@"c=%.3f",c);

//应用,把一个整形的9转换成字符串

NSString *ar=[[NSString alloc]initWithFormat:@"%d" ,9];

NSLog(@"%@",ar);

//字符串转换成整形

int k=[ar intValue];

NSLog(@"%d",k);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: