您的位置:首页 > 移动开发 > Objective-C

object-c中NSString的常见操作

2014-08-17 23:05 309 查看
object-c中所有的数据类型都是一个对象,创建对象都需要首先使用alloc在堆空间给对象分配一块空间。这个空间大概为200个字节左右,所以使用alloc 创建对象一定要释放对象,当然现在的 xcode版本是不需要你手动释的,作为初学者不需要堆内存管理理解太深,但是你应该知道什么是内存管理,知道内存管理里面的黄金法则到底是什么。

//本篇文章针对初学者,怎么使用NSString/NSSMutableString字符串创建对象, 使用对象的方法。

一.NSString

实例化的方法
//1.
通过字符串对象实例化对象 initWithString

NSString *nsstr=@"abcd";
//*nsstr是一个字符串指针,
NSString *str=[[NSStringalloc]initWithString:nsstr];
NSLog(@"str=%@",str);

//2.
通过从c语言的字符串创建一个对象实例方法---stringWithUTF8String

char *c="abcdef";
NSString *str=[[NSStringalloc]initWithUTF8String:c];
NSLog(@"str=%@",str);

//
类方法---通过从c语言的字符串创建一个对象-NSStringstringWithUTF8String

char *c="abcdef";

NSString *str=[NSStringstringWithUTF8String:c];
NSLog(@"str=%@",str);

//3. 格式化方法创建字符串对象--stringWithFormat
int s1=100;
char *s2="abc";
NSString *str1=@"def";
NSString *str=[[NSStringalloc]initWithFormat:@"%i%s%@",s1,s2,str1];
NSLog(@"str%@",g);

//类方法格式化创建字符串对象---stringWithFormat

int s1=100;
char *s2="abc";
NSString *str1=@"def";
NSString
*str=[NSStringstringWithFormat:@"%i%s%@",s1,s2,str1];
NSLog(@"str=%@",str);

//4.获取字符串的长度
NSLog(@"%lu",[str1
length]);
//获取字符串对象的长度。无符号整形。

//思考.字符串对象的遍历

NSLog(@"%c",[str1
characterAtIndex:0]);
for(long
i=0;i<[str1 length];i++)
{
NSLog(@"%c",[str1
characterAtIndex:i]);
}

//5.判断字符串是否相等
//返回一个BOOL类型。可以用li打印出来,相等返回1 不等返回0

NSLog(@"%i",[str1
isEqualToString:str2]);

//6.字符串的比较

NSLog(@"%li",[str1
compare:str2]);
//compare
返回三个值,-1,0,1
// NSOrderedSame;
0相等
//NSOrderedAscending;
-1升序
//NSOrderedDescending; 1
降序

//7.字符串中查找字符串
NSRange rg=[str1
rangeOfString:@"a"];
//rg.length;
NSNotFound 没有找到
//rg.location;
字符串所在的小标
NSLog(@"location=%zi,length=%zi",rg.location,rg.length);

NSLog(@"是否有后缀=%i",[str3hasPrefix:@"txt"]);

//8.对象转整形
intValue
NSString *str4=@"100";
NSLog(@"对象转换为整形%i",[str4intValue]);

//9.大小写转化
uppercaseString lowercaseString
NSString *str5=@"abc";
NSString *str6=@"ABC";
NSLog(@"小写abc转大写%@",[str5
uppercaseString]);
NSLog(@"大写ABC转小写%@",[str5
lowercaseString]);

// 10.找字符串对象下表对应的元素characterAtIndex,遍历字符串使用比较多characterAtIndex
//将传入的字符串逆序
//比如输入@"abcdef"输出@"fedcba"
NSString *str7=@"abcdef";
NSLog(@"这是字符串的逆序!");
for (long
i=[str7 length]-1; i>=0; i--)
{

printf("%c",[str7
characterAtIndex:i]);
}

//11.字符串中查找字符串
//返回的是一个NSrange类型。
//
//typedef struct _NSRange {
//NSUInteger location;
下标位置
//
NSUInteger length; 长度
// } NSRange;
NSRange rg=[nsstr1
rangeOfString:@"a"];
//rg.length;
NSNotFound 没有找到
//rg.location;
字符串所在的小标
NSLog(@"location=%zi,length=%zi",rg.location,rg.length);
NSLog(@"location=%zilength=%zi",[nsstr1
rangeOfString:@"a"].location,[nsstr1
rangeOfString:@"a"].length);

//12.查找字符串对象是否含有后缀hasPrefix, hasSuffix
//返回bool类型
NSString *nsstr3=@"abcde.txt";
NSLog(@"是否有前缀=%i",[nsstr3hasPrefix:@"abc"]);
NSLog(@"是否有后缀=%i",[nsstr3hasSuffix:@"txt"]);

//13.字符串对象转整形
intValue
//字符串对象转浮点型floatValue
//字符串对象转双精度浮点型 doubleValue
//字符串对象转长整形longLongValue
NSString *nsstr4=@"100";
[nsstr4
doubleValue];
[nsstr4 longLongValue];
[nsstr4 floatValue];

NSLog(@"对象转换为整形%i",[nsstr4intValue]);
NSLog(@"对象转换为浮点型%f",[nsstr4floatValue]);
NSLog(@"对象转换为浮点型%lf",[nsstr4
doubleValue]);
NSLog(@"对象转换为长整形%li",[nsstr4
longLongValue]);

//14.将字符串的每个首字母转化为大写的字母capitalizedString
//返回一个字符串指针
NSString *nsstr8=@"abc
defg";
NSLog(@"首字母转化为大写%@",
[nsstr8 capitalizedString] );

//15.截取字符串substringFromIndex
NSString *nsstr9=@"abcdef";
//从当前位置下标开始,直到结尾.
NSLog(@"截取字符串1%@",
[nsstr9 substringFromIndex:3]);

//
从头部开始,直到当前下标的前一个字符substringWithRange
NSLog(@"截取字符串2%@",[nsstr9
substringToIndex:3]);
//截取字符串范围substringWithRange
NSRange rang=
NSMakeRange(1, 3);

NSLog(@"截取字符串3%@",[nsstr9
substringWithRange:rang]);

//16字符串的分割(componentsSeparatedByString)
NSString *nsstr10=@"a,b,c,d";
NSArray *array= [nsstr10
componentsSeparatedByString:@","];
//遍历数组
//[arraycount]数组的长度
for (int
i=0; i<[array count]; i++) {

NSLog(@"%@",[array
objectAtIndex:i]);
}

//16.(stringWithContentsOfFile)文件操作,读取磁盘txt文件
NSString *str11=[NSStringstringWithContentsOfFile:@"/Users/student/Desktop/helloworld.txt"encoding:
NSUTF8StringEncoding
error:nil];
NSLog(@"读取磁盘文件%@",str11);

//17.抓取网页
NSURL *url=[[NSURLalloc]initWithString:@"http://192.168.88.8/JudgeOnline-new/index.php?c=index&a=center"];
NSString *str13=[NSStringstringWithContentsOfURL:url
encoding:NSUTF8StringEncodingerror:nil];
NSLog(@"抓取网页的内容%@",str13);

二.1.NSMutableString
可变字符串操作,可变字符串操作是没有返回值的。

//NSMutableString
是一个可变的字符串对象。
NSMutableString *nsstr14=[[NSMutableStringalloc]
init];
nsstr14.string=@"abcdef";
[nsstr14
appendString:@"
def"];
NSLog(@"str14=%@",nsstr14);

//2.删除可变字符串deleteCharactersInRange
//删除范围
[nsstr14
deleteCharactersInRange:NSMakeRange(2, 3)];
NSLog(@"删除字符串对象%@",
nsstr14);

//3.stringWithCapacity
给予预留空间
NSMutableString *nsstr15=[NSMutableStringstringWithCapacity:10];
constchar *c="abc";
NSMutableString *nsstr16=[[NSMutableStringalloc]initWithCString:c
encoding:NSUTF8StringEncoding];
NSLog(@"%@",nsstr6);

//
NSMutableString
NSMutableString *nsstr17=[[NSMutableStringalloc]

initWithString:nsstr16];

//4.字符串的拼接stringByAppendingString
NSMutableString *nsstr18=[[NSMutableStringalloc]initWithFormat:@"%i",100];
//nsstring字符串对象的拼接.
NSString *nsstr19=@"helloworld";
NSString *nsstr20=[nsstr19
stringByAppendingString:@"nihaoa"];
NSLog(@"%@",nsstr20);

//5.字符串的替换
NSString *nsstr21=[nsstr20
stringByReplacingOccurrencesOfString:@"ell"withString:@"koo"];
NSLog(@"字符的替换%@",nsstr21);

[nsstr20
stringByReplacingOccurrencesOfString:@"el"withString:@"kk"options:NSCaseInsensitiveSearchrange:
NSMakeRange(1,2)];
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: