iOS不可变字符串的所有操作
可以直接复制代码即可运行看看结果,方便理解
//NSString
//OC字符串不能用printf输出
//但是遗憾的是OC没有一个从终端读取数据的方式,需要使用scanf读取C字符串然后转换成OC的字符串
#pragma mark 字符初始化
//创建一个不可变字符串str1 值是常量字符串
//打印字符串用%@来打印
//%@还可以打印对象
NSString * str1 = @"常量字符串";
NSLog(@"%@",str1);
//用字符串创建字符串
NSString * str2 = [[NSString alloc]initWithString:str1];
NSLog(@"%@",str2);
//用字符串的格式化来初始化创建一个字符串
//API
NSString * str3 = [[NSString alloc]initWithFormat:@"%@%d%f",@"abc",123,12.3];
NSLog(@"%@",str3);
//用字符串的类方法创建一个格式化字符串
NSString * str4 = [NSString stringWithFormat:@"%@%d",@"def",456];
NSLog(@"%@",str4);
#pragma mark 将C语言字符串转换成OC字符串
//OC中只要遇到字符串编码的问题均为NSUTF8StringEncoding
//万国码unicode
NSString * str5 = [[NSString alloc]initWithCString:"ABC" encoding:NSUTF8StringEncoding];
NSLog(@"%@",str5);
char * p = "abc";
NSString * str5_1 = [[NSString alloc]initWithUTF8String:p];
NSLog(@"%@",str5_1);
//类方法转换C字符串
NSString * str5_2 = [NSString stringWithCString:p encoding:NSUTF8StringEncoding];
NSString * str5_3 = [NSString stringWithUTF8String:p];
NSLog(@"%@ %@",str5_2, str5_3);
#pragma mark 字符串的比较
//判断字符串中不能是用 == 判断
//在设计NSString时,内部应用了一种优化的思想, 享元设计思想
//在设计字符串的时候,会有一个缓冲池,只要缓冲池中有当前字符串,那么就会返回当前字符串的地址,不会再去重复创建,因为大量的创建字符串会消耗内存,所以提过了这种方式,当我们是用StringWithFormat的时候回重新创建一个新的字符串,所以不能用 == 号进行判断
//在判断字符串中 == 判断的是字符串的指针地址是否相等,存在一定判断错误的风险.
//在实际开发中不能是用== 而是使用专门判断字符串想的方法 isEqualToString
NSString * str6 = @"ab";
NSString * str6_1 = @"你好";
//接收返回值
//BOOL isOK = [str6 isEqualToString:str6_1];
if([str6 isEqualToString:str6_1]){
NSLog(@"%@ == %@",str6,str6_1);
}else{
NSLog(@"%@ != %@",str6,str6_1);
}
//获取字符串的长度
//在NSString中 任何字母,数字,中文字符的长度都是1
NSLog(@"%@的长度是%ld",str6,[str6 length]);
//@"abcde";
//字符串的位置是从0开始计数的
//一个汉字占2个字节
NSString * str7 = @"xcode";
//获取单个字符
//unichar 是两个字节的 char
//字符串的位置是从0开始计数的
unichar newChar = [str7 characterAtIndex:4];
NSLog(@"newChar = %c",newChar);
//NSString中有汉字 "%C"
unichar hanzi = [str6_1 characterAtIndex:0];
NSLog(@"hanzi = %C",hanzi);
//比较两个字符串的大小
NSString * str8 = @"yang chang";
NSString * str8_1 = @"B duan";
NSComparisonResult result =[str8 compare:str8_1];
if (result == NSOrderedSame) {
NSLog(@"%@ = %@",str8 ,str8_1);
//升序 前者小 后者大
}else if (result == NSOrderedAscending){
NSLog(@"%@ < %@",str8,str8_1);
//降序 前者大 后者小
}else if(result == NSOrderedDescending){
NSLog(@"%@ > %@",str8,str8_1);
}
#pragma mark 字符串的拼接
NSString * str9 = @"北京北京";
NSString * str9_1 = @"我最帅";
//str9_1拼接到str9的后面
NSString * str9_2 = [str9 stringByAppendingString: str9_1];
NSLog(@"%@",str9_2);
//格式化拼接 在初始化字符串的同时进行拼接
str9_2 = [str9 stringByAppendingFormat:@"%@%d%f",str9_1,520,520.0];
NSLog(@"%@",str9_2);
//如何遍历字符串中每一个字符
NSString * str10 = @"abcdefgh";
for(int i = 0; i<[str10 length];i++){
char c = [str10 characterAtIndex:i];
NSLog(@"%d = %c ",i,c);
}
#pragma mark 字符串的查找
NSString * str11 = @"你好北京123";
//在当前字符串str11中查找123这个字符串,将他的位置和长度返回
NSRange range = [str11 rangeOfString:@"123"];
NSLog(@"loc = %lu , len = %lu",range.location,range.length);
/**
typedef struct _NSRange {
NSUInteger location;//这个是位置不是长度!!!!!
NSUInteger length;//这个是长度不是位置!!!
} NSRange;
*/
//判断当前字符串是否存在?
if(range.location != NSNotFound){
NSLog(@"123在%@中位置是%lu",str11,range.location);
}else{
NSLog(@"123不再字符串");
}
if(range.length != 0){
NSLog(@"123在%@中长度是%lu",str11,range.length);
}else{
NSLog(@"不在");
}
#pragma mark 字符串的截取
NSString * str12 = @"北京欢迎您,iOS入门还是比较容易的ios";
//是从字符串str12中截取出一个子串(从原串第0个字符开始截取到传入得[值-1]的位置)
NSString * str12_1 = [str12 substringToIndex:5];
NSLog(@"str12_1 = %@",str12_1);
//字符串str12中截取指定位置6到字符串的结尾
NSString * str12_2 = [str12 substringFromIndex:6];
NSLog(@"str12_2 = %@", str12_2);
//通过已知的范围range在原字符串中查找子串
//第一个是位置
//第二个是长度
NSRange range2 = {2,4};
NSLog(@"%@",[str12 substringWithRange:range2]);
//将原串str12指定范围内的字符用@"努力学习"替换
NSString * str12_3 = [str12 stringByReplacingCharactersInRange: NSMakeRange(0, 9) withString:@"努力学习"];
NSLog(@"str12_3 = %@",str12_3);
#pragma mark 判断前缀和后缀
NSString * str13 = @"http://www.baidu.com";
//检查某个字符串是否已指定的字符串开始(前缀)
if([str13 hasPrefix:@"http"]){
NSLog(@"是");
}else{
NSLog(@"不是");
}
//检查后缀
if([str13 hasSuffix:@"com"]){
NSLog(@"是");
}else{
NSLog(@"不是");
}
#pragma mark 字符串的转换
NSString * str14 = @"abc";
//将str14转换成大写
str14 = [str14 uppercaseString];
NSLog(@"%@",str14);
//将str14转换成小写
str14 = [str14 lowercaseString];
NSLog(@"%@",str14);
//将基本类型转换型字符串
// stringWithFormat
// initWithFormat
//将字符串转换成基本数据类型
NSString * str14_1 = @"1";
int a = [str14_1 intValue];
//floatValue
//doubleValue
NSString * str14_2 = @"YES";
BOOL isOK = [str14_2 boolValue];
//boolValue
NSLog(@"%d",a);
//@"1"
#pragma mark 字符串的拆分
NSString * str15 = @"a,b,c,d";
//用指定的分隔符将字符串才分成数组
//is+-n*/io=pp
NSArray * array = [str15 componentsSeparatedByString:@","];
NSLog(@"%@",array);
// for (int i= 0; i<[array count];i++) {
// NSLog(@"%@",[array objectAtIndex:i]);
// }
#pragma mark 从指定文件读取字符串
//将文件的内容读入到字符串中
//第一个参数是文件的路径
//第二个字符编码
//第三个错误信息
NSString * str16 = [NSString stringWithContentsOfFile:@"/Users/hhh/Desktop/github.txt" encoding:NSUTF8StringEncoding error:nil];
NSLog(@"str16 = %@",str16);
//从网上读取文件内容到字符串中
//第一个 网址
//第二个 字符编码
//第三个 错误信息
NSString * str17 = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://10.0.178.5/resource/github.txt"]encoding:NSUTF8StringEncoding error:nil];
NSLog(@"str17 = %@",str17);
//写入文件
//第一个是目标文件路径
//第二个是否写入缓存(原子)
//第三个编码
//第四个错误信息
//如果没有文件,那么就会创建出一个新的文件,如果原文件已经存在,那么会覆盖原文件
[str12 writeToFile:@"/Users/hhh/Desktop/aa.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
iOS不可变字符串的所有操作的更多相关文章
- iOS可变字符串的所有操作
可直接把代码复制即可结合输出看结果加深记忆 //创建一个可变字符串 NSMutableString * ms1 = [[NSMutableString alloc]init]; //可以通过类方法来创 ...
- iOS不可变数组的所有操作
#pragma mark 创建数组 //1.通过对象方法创建数组 NSArray * array = [[NSArray alloc]initWithObjects:@"One", ...
- ios除去可变字符串中的某些字符
//除去字符串中的"111@" NSMutableString *str = [[NSMutableString alloc]initWithFormat:@"111@s ...
- IOS 学习笔记 2015-03-24 OC-API-不可变字符串
大部分是模仿// // main.m // OC-API-不可变字符串 // // Created by wangtouwang on 15/3/25. // Copyright (c) 2015年 ...
- iOS 可变字符串NSMutableString的使用
.创建一个可变字符串 NSMutableString * ms1 = [[NSMutableString alloc]init]; .可以通过类方法来创建 NSMutableString * ms2 ...
- 初级:使用MD5对字符串进行加密操作
加密技术在企业数据安全中的应用: 大型企业管理软件的应用越来越广泛,企业数据平台涉及局域网.广域网. Internet等,在各类系统中保存的企业关键数据量也越来越大,许多数据需要保存数十年以上,甚至是 ...
- iOS - OC NSString 字符串
前言 @interface NSString : NSObject <NSCopying, NSMutableCopying, NSSecureCoding> @interface NSM ...
- iOS中的字符串NSString
创建一个字符串对象: NSstring * str1 = @"hello world"; NSString * str = [[NSString alloc]initWithStr ...
- 使用sed命令向文件中追加可变字符串
1.如何向文件追加可变字符串,有如下两种方法 sed -i '1a '$s'' filename sed -i "1a $s" filename 注意: 以上命令是假定向文件fil ...
随机推荐
- Aa3.0 事件机制
说明:本文由多处网络文章整理而成,在此未一一注明原文链接,敬请谅解! AS3:事件流机制 事件流 只要发生事件,Flash Player就会调度该事件对象. 如果事件目标不在显示列表中,则Flash ...
- redhat 安装配置samba实现win共享linux主机目录
[转]http://blog.chinaunix.net/uid-26642180-id-3135941.html redhat 安装配置samba实现win共享linux主机目录 2012-03-1 ...
- 转:drupal使用superfish建立下拉菜单
参考地址:1. http://www.drupalla.com/project/superfish 2.http://drupalchina.cn/node/1798 但是按照这个做出来,我的主菜单和 ...
- 如何在高并发的分布式系统中产生UUID
一.数据库发号器 每一次都请求数据库,通过数据库的自增ID来获取全局唯一ID 对于小系统来说,这是一个简单有效的方案,不过也就不符合讨论情形中的高并发的场景. 首先,数据库自增ID需要锁表 而且,UU ...
- linux和windows双系统时间错误解决方法
转自http://www.2cto.com/os/201204/126212.html windows时间会慢8小时,原因: 两个概念: UTC即Universal Time Coordinated, ...
- APP性能测试工具
各种自动化工具作用: 自动化:appium 针对接口做压测:jmeter 执行一段脚本,随机乱点:monkey 如果有用loadrunner12的话 也可以用mobilerecoder录制脚本(lr1 ...
- Ubuntu彻底删除mysql
删除 mysql sudo apt-get autoremove --purge mysql-server-5.0sudo apt-get remove mysql-serversudo apt-ge ...
- aws部署从无到有(二)windows管理aws
1 AMI正常启动后会进入下面页面 2 远程链接点击如何连接至您的 Linux 实例进入下载页 Windows下使用 PuTTY连接到 Linux 实例 http://www.chiark.green ...
- 修改weblogic中StuckThreadMaxTime参数
your_domain->Environment ->Servers ->your_server->Configuration->Tuning->Stuck Thr ...
- OC之KVC,KVO
KVO简介 在 Cocoa 的模型-视图-控制器 (Model-view-controller)架构里,控制器负责让视图和模型同步.这一共有两步:当 model 对象改变的时候,视图应该随之改变以反映 ...