黑马程序员_IOS开发_Objective-C学习笔记_NSString

NSString

NSString是一个IOS OC开发中经常使用到得一个对象类型。NSString是NSObject(Foundation的基础对象)的子类,所以具有NSObject的所有特性。

NS是Cocoa类对象类型的前缀,来源于乔布斯公司的操作系统的名字 NEXTSTEP

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

NSString *aString = @"This is String";  //注意:这里和C语言字符串不一样,需要在头部放一个@符号

1.2此方法需要手动释放内存

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

 

2.使用NSString对象

NSString *string = @"This is a Person Class";
NSLog(@"%@", string);

 

3.释放NSString

[string release]; 

 

4.NSString常用方法

NSString * stringA = @"This is string A";
NSString * stringB = @"This is string B";
NSString * result;
NSComparisonResult compareResult;

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

//判断字符串是否包含
NSRange range = [tempStr rangeOfString:@")\">"];
if (range.location == NSNotFound){ //不包含
}
else//包含
{
                        
}
//将一个字符串复制到另一个字符串
result = [NSString stringWithString: stringA];
NSLog(@"Copy: %@", result);

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

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

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

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

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

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

//(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);     //打印

// 数组转字符串
NSLog(@"%@", [[str7 componentsSeparatedByCharactersInSet:CharacterSet] componentsJoinedByString:str8]);

 

NSMutableString常用方法

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

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

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

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

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

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

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

NSLog(@"%@", stringA);
[stringA release];

 

Description方法:

程序可以利用NSLog来打印对象的,但是默认是显示的类名和对象在内存中的地址。而当我们需要自定义的打印内容为,我们可以重载Description方法。

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

//打印(u 是创建的对象)
NSLog(@"%@", [u description]);

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。