自学iOS开发系列----OC(字符串)

OC的程序,依托于基础类库Foundation,这个框架里提供很多官方类。其中有三个基础的数据结构:字符串、数组、字典。OC兼容C的字符串,但是OC有自己的字符串,是一个类。声明的对象,既能存储一串字符,又能通过一些方法,管理存储的字符。

一、不可变字符串

1.创建字符串

C中用”” 表示字符串,OC中用@”” 表示字符串;

打印C字符串用%s,打印OC字符串用%@。

①字面量方法(常量赋值)

NSString * str1 = @"春风十里不如你";
NSLog(@"字面量赋值:%@",str1);

②实例化方法(对象方法)

NSString * str2 = [[NSString alloc] initWithString:@"再别康桥"];
NSLog(@"实例方法:%@",str2);

③用C字符串创建OC字符串

NSString * str3 = [[NSString alloc] initWithCString:"C String" encoding:NSUTF8StringEncoding];
NSLog(@"C字符串创建OC字符串:%@",str3);

④格式化字符串

NSString * str4 = [[NSString alloc] initWithFormat:@"%@-%@",@"升值",@"加薪"];
NSLog(@"格式化字符串:%@",str4);

⑤类方法

NSString * str5 = [NSString stringWithFormat:@"%d,%f,%@",521,13.14,@"我带你一生一世"];

2.求字符串长度

NSString * strLength = @"谈一场不分手的恋爱";
NSUInteger len = [strLength length];
NSLog(@"length = %lu",len);

3.通过索引获取相应的字符

NSString * strIndexCharacter = @"I love you forever";
unichar c = [strIndexCharacter characterAtIndex:7];
NSLog(@"%C",c);

4.判断两个字符串是否相等(BOOL 布尔值,非真即假)

NSString * strEqual1 = @"To live in hearts we leave is not to die";
NSString * strEqual2 = @"To live in hearts we leave is not to die";
BOOL isEqual= [strEqual1 isEqualToString:strEqual2];

if (god == TRUE) {
    NSLog(@"两个字符串相等");
} else {
    NSLog(@"两个字符串不相等");
}

5.字符串查找

NSString * strSeek = @"I love you";
NSRange range = [strSeek rangeOfString:@"love me"];
NSLog(@"love loc = %lu,len = %lu",range.location,range.length);

if (range.length == 0) {
    NSLog(@"不存在这样的子串");
}

6.截取字符串

①按照范围截取

NSSstring * strSub = @"I love you forever !";
NSRange range = {2,4};
NSString * strRange = [strSub substringWithRange:range];
NSLog(@"按照范围截取字符串%@",strRange);

②从某位置截取到最后(包含起始位置)

NSString * str1 = [strSub substringFromIndex:3];
NSLog(@"%@",str1);

③从第一个字符截取到某位置(不包含结束位置)

NSString * str2 = [strSub substringToIndex:7];
NSLog(@"%@",str2);

7.判断前后缀


NSString * strFix = @"http://www.baidu.com/beatiful/girl.png";

BOOL tag1 = [str14 hasPrefix:@"http://"];
BOOL tag2 = [str14 hasSuffix:@".jpg"];

if (tag1) {
    NSLog(@"是http://前缀,说明他是一个网址");
} else {
    NSLog(@"不是http://前缀,说明他不是一个网址");
}

if (tag2) {
    NSLog(@"是.jpg后缀,说明他是一张jpg图片");
} else {
    NSLog(@"不是.jpg后缀,说明他不是一张jpg图片");
}

8.数字串转化为数字

NSString * strNum = @"5211314";
int ret = [strNum intValue];
NSLog(@"strNum:%d",ret);

9.大小写转换

①把所有小写字母转成大写

NSString * str = @"If you do not leave me.I will by yourside until the life end!";
NSString * upStr = [str uppercaseString];
NSLog(@"所有字母大写 = %@",upStr);

②把所有大写字母转成小写

NSString * str = @"If you do not leave me.I will by yourside until the life end!";
NSString * lowStr = [str lowercaseString];
NSLog(@"所有字母小写 = %@",lowStr);

③把每个单词的首字母变成大写(连续的字符会做为一个整体)

NSString * str = @"If you do not leave me.I will by yourside until the life end!";
NSString * capStr = [str capitalizedString];
NSLog(@"每个单词首字母大写 = %@",capStr);

10.从本地读取文件内容

/**
*  @param  path    文件的路径
*  @param  enc    文字编码
*  @param  error  读取文件失败 ,会返回一个错误对象,
*/

NSError * error = nil;
NSString * path = @"/Users/qianfeng/Desktop/未命名.rtf";
NSString * content = [[NSString alloc] initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];

if (error) {
    NSLog(@"error = %@",error);
} else {
    NSLog(@"%@",content);
}

二、可变字符串

1.在指定位置插入子串

NSMutableString * mutableStr = [[NSMutableString alloc] initWithString:@"Hello I love you"];
[mutableStr insertString:@"World" atIndex:6];
NSLog(@"%@", mutableStr);

2.删除指定范围的子串

NSMutableString * mutableStr = [[NSMutableString alloc] initWithString:@"Hello I love you"];
NSRange range = {6,8};
[mutableStr deleteCharactersInRange:range];
NSLog(@"%@", mutableStr);

3.追加子串

NSMutableString * mutableStr = [[NSMutableString alloc] initWithString:@"Hello I love you"];
[mutableStr appendFormat:@" %d %.2f %@",1800,3.15,@"我爱你"];
NSLog(@"%@", mutableStr);

4.修改字符串

NSMutableString * mutableStr = [[NSMutableString alloc] initWithString:@"Hello I love you"];
[mutableStr setString:@"God bye"];
NSLog(@"%@", mutableStr);

5.替换字符串

NSMutableString * mutableStr = [[NSMutableString alloc] initWithString:@"Hello I love you"];
NSRange range = {6,7};
[mutableStr replaceCharactersInRange:range withString:@"world"];
NSLog(@"%@", mutableStr);

小练习

1.从字符串@”Welcome to Beijing!”, 中提取第3到第10个字符,生成字符串。

2.将可变字符串@”When I was young, I loved a girl in neighbor class.”中,从young提取到girl。替换成@”a teacher, I rather to teach student”。(要求不能手动计数)

参考答案(一万个读者有一万个哈姆雷特,一万个程序员有一万种编码风格,答案仅供参考)

1.从字符串@”Welcome to Beijing!”, 中提取第3到第10个字符,生成字符串。

NSString * str = @"Welcome to Beijing!";
NSRange range = {2,8};
NSString * strNew = [str substringWithRange:range];
NSLog(@"%@",str5);

2.将可变字符串@”When I was young, I loved a girl in neighbor class.”中,从young提取到girl。替换成@”a teacher, I rather to teach student “。(要求不能手动计数)

NSMutableString * mutableStr = [[NSMutableString alloc] initWithString:@"When I was young, I loved a girl in neighbor class."];
NSString * str = @"a teacher, I rather to teach student ";
NSString * startStr = @"young";
NSString * endStr = @"girl";

//求出起始位置
NSRange startRange = [mutableStr rangeOfString:startStr];

//求出截至位置
NSRange endRange = [mutableStr rangeOfString:endStr];

//求出需要替换的字符串位置
NSRange range = {startRange.location,endRange.location - startRange.location + endRange.length};
[mutableStr replaceCharactersInRange:range withString:str];
NSLog(@"%@",mutableStr);
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值