Objective-C 之NSString及常用方法

本文介绍了NSString和NSMutableString的基本概念及使用方法,包括创建、使用、释放字符串对象,以及常用的字符串操作方法。同时,还提供了如何自定义description方法来更好地展示对象信息。

NSString简介

NSString是一个对象类型。NSString是NSObject(Cocoa Foundation的基础对象)的子类,所以具有NSObject的所有特性,NSString对象由unichar字符组成。unichar字符是符合Unicode标准的多字节字符。而且不别担心字符串的内部表示,因为NSString类已经自动处理了。

一、NSString

1 创建NSString对象
①、此方法不需要手动释放内存。

NSString*aString =@"This is String";  //需要在头部放一个@符号

②、此方法需要手动释放内存

NSString*aString =[[NSString alloc] initWithFormat:@"This is String"];

2 使用NSString对象

NSString *aString = @"Programming is fun";
NSLog(@"%@", aString);

3 释放NSString

[aString release]; 

3 快速使用一个NSString

NSLog([NSString stringWithFormat:@"一个NS字符串"]);

这种快速方法返回的是一个return为1,autorelease的对象,不需要操心它的内存管理

4 NSString常用方法

NSString * str1 = @"This is string A";
NSString * str2 = @"This is string B";
NSString * res;
NSComparisonResult compareResult;

//计算字符串中的字符
NSLog(@"Length of str1: %lu", [str1 length]);

//判断字符串是否包含
NSRange range = [tempStr rangeOfString:@")\">"];
if (range.location == NSNotFound){ //不包含
}
else//包含
{

}
//将一个字符串复制到另一个字符串
res = [NSString stringWithString: str1];
NSLog(@"Copy: %@", res);

//将一个字符串复制到另一个字符串的末尾
str2 = [str1 stringByAppendingString: str2];
NSLog(@"Concatentation: %@", str2);

//验证两个字符串是否相等
if ([str1 isEqualToString: res] == YES) {
    NSLog(@"str1 == res");
}else{
    NSLog(@"str2 @= res");
}

//验证一个字符串是否小于、等于或者大于另一个字符串
compareResult = [str1 compare: str2];
if (compareResult < NSOrderedAscending) {
    NSLog(@"str1 < str2");
}else if (compareResult == NSOrderedSame){
    NSLog(@"str1 = str2");
}else{
    NSLog(@"str1 > str2");
}

//将字符串转换为大写
res = [str1 uppercaseString];
NSLog(@"UppercaseString conversion: %s", [res UTF8String]);

//将字符串转换为小写
res = [str1 lowercaseString];
NSLog(@"LowercaseString conversion: %s", res);
NSLog(@"Original string: %@", str1);

//(1)截取字符串”20 | http://www.baidu.com”中,”|”字符前面和后面的数据,分别输出
NSString * str1 = @"20|http://www.baidu.com";
NSArray * str2 = [str1 componentsSeparatedByString:@"|"];   //使用 | 分割字符串为数组
for (str1 in str2) {                //遍历输出
    NSLog(@"obj = %@", str1);
}

//(2)从字符串@“aBcD_EfGk”中取出EfGk,并让大写字母转成小写,输出efgk
NSString * str3 = @"aBcD_EfGk";
NSRange range = {5, 4};  //定义rang,开始位置为5,获取4个
NSString * str4 = [str3 substringWithRange:range];  //获取EfGk
NSLog(@"%@", [str4 lowercaseString]);   //输出,并使用 lowercaseString 转换成小写

//(3)给定一个字符串,判断字符串中是否含有“png”,如果有就删除。
NSString * str5 = @"skejf_png_ksd_ppng——————png";
NSString * str6 = [str5 stringByReplacingOccurrencesOfString:@"png" withString:@""];    //替换png
NSLog(@"%@", str6);     //打印

//(4)如何将敏感字变成**
NSString * str7 = @"The name iTunes use222s when it sorts by artist na111me";
NSString * str8 = @"*";    //定义替换的内容
NSString * str9 = @"12";  //定义被替换的内容
NSCharacterSet *CharacterSet = [NSCharacterSet characterSetWithCharactersInString:str9]; //替换
// 数组转字符串
NSLog(@"%@", [[str7 componentsSeparatedByCharactersInSet:CharacterSet] componentsJoinedByString:str8]);

5 NSMutableString常用方法

//capacity 容量,指定存储空间效率高。如果字符串长度大于10,则会自动增加存储空间。
NSMutableString * str1 = [[NSMutableString alloc] initWithCapacity:10];

//setString 设置字符串
[str1 setString:@"apple 1234"];

//appendString 拼接字符串
[str1 appendString:@"567"];

//appendFormat 拼接格式字符串
[str1 appendFormat:@" age = %i", 888];

//replaceCharactersInRange:range withString:id //根据范围替换字符串
//找到范围
NSRange range = [str1 rangeOfString:@"ple"];
//开始替换
[str1 replaceCharactersInRange:range withString:@"*"];

//insertString:< #(NSString *)#> atIndex:< #(NSUInteger)#>
//在指定索引后面插入字符串
[str1 insertString:@"HHH" atIndex:3];

//deleteCharactersInRange:< #(NSRange)#>
//删除指定范围字符串
[str1 deleteCharactersInRange:range];

//生成结果为
//apH 1234567 age = 888

二、Description方法:

NSLog(@”%@”, [对象 description]),利用这种方法是可以打印对象的,但是默认是显示的类名和对象在内存中的地址。而我们需要更详细的内容,那么可以重新定义Description方法。

//方法实现
- (NSString *) description {   
    return [NSString stringWithFormat: @"name = %@, age = %i, height = %i, width = %i", _name, _age, _height, _width];
}

//打印(u 是创建的对象)
NSLog(@"%@", [u description]);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值