iOS学习之NSString

一、不可变字符

  NSString是不可变字符串,它产生的其他字符串方法都是生成一个新的字符串,而不会改变原来字符串。

1.创建方式

//1)字面量,它是常量字符串,存储常量区
NSString *str=@"hello";
//2)通过快捷构造法,存储堆区
NSString *str = [NSString stringWithFormat:@"hello %@", @"world"];
//3)初始化方法
NSString *str = [[NSString alloc] initWithFormat:@"%@",@"hello"];

2.字符串的获取

1)获取字符串长度

NSString *str=@"hello";
long length = str.length;

2)获取子串

NSString *str=@"hello";

/*从索引字符串开始截取,直到字符串末尾,包含索引上的字符*/
NSString *strSub = [str substringFormIndex:2];

/*从字符串开头开始截取,直到索引位置,不包含索引上的字符*/
NSString *strSubT = [str substringToIndex:2];

/*从哪个位置开始,截取多长*/
NSRange range = {2,4};
NSString *strSubR = [str substringWithRange:range];

/*获取某个子串所在的区域*/
NSRange rangeS = [str rangeOfString"@"el"];

3)字符串范围获取

/*计算文本大小*/
CGSize maxSize = CGSizeMake(MAXFLOAT, MAXFLOAT);/*width与height都不限制*/
CGSize nameSize = [self.microBlogModel.name boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:15]} context:nil].size;

3.字符串操作

/*单词首字母转大写*/
[str capitalizedString];

/*字符替换*/
NSString *newStr = [str stringByReplacingOccurencesOfString:@"ll" withString:@"al"];

/*使用某个字符串替换掉原来字符串中某个区间的字符串*/
NSRange range = [str rangeOfString:@"ll"];
NSString *newStr = [str stringByReplacingCharactersInRange:range withSring:@"hi"];

/*删除原字符串中的所有指定字符串*/
NSString *newStr = [str stringByReplacingOccurencesOfString:@"ll" withString:@""];

/*去掉两头空格*/
NSString *newStr = [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

4.字符串与文件

/*在原来路径上拼接一个路径*/
NSString *path = @"/Users/dengwei";
path = [path stringByAppendingPathComponent:@"Desktop"];

/*获取扩展名*/
NSString *path = @"/Users/dengwei/Desktop/apple.txt";
path = [path stringByDeletingPathExtension];
path = [path stringByAppendingPathExtension:@"png"];

/*把字符串写入文件*/
NSString *str = @"today is cold!";
NSString *path = @"/Users/dengwei/Desktop/apple.txt";
NSError *error;
BOOL isSuccess = [str writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:&error];

/*读取文件*/
NSString *string = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];

5.字符串与URL

/*
URL:Uniform Resource Locator 统一资源定位符
URL:格式  协议头://主机名称/资源路径
http://www.baidu.com/some/images/pic.png
404:没有找到资源
*/
NSString *str = @"today is cold!";
/*url路径中不支持中文,若是有中文则需将中文转码*/
NSURL *url =  [NSURL URLWithString:@"file:///Users/dengwei/Desktop/apple.txt"];

/*将中文转码*/
NSString *url_cn =  @"file:///Users/dengwei/Desktop/中文.txt";
/*编码,把UTF8编码的字符串编码成URL中可用的字符串*/
url_cn = [url_cn stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
/*解码,把URL中可用的字符串编码的字符串解码成UTF8编码的字符串*/
url_cn = [url_cn stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

url_cn = [NSURL URLWithString:url_cn];
NSError *error;
/*写入*/
BOOL isSuccess = [str writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:&error];
/*读取*/
NSString *string = [str stringWithContentsOfURL:url atomically:YES encoding:NSUTF8StringEncoding error:&error];

二、可变字符

  NSMutableString,可变字符,是NSString的子类。

  一个字符串需要经常修改其中的内容,则使用NSMutableString。 

可变字符串初始化,其他操作与NSString一样,因为其是NSString的子类。

NSMutableString *strM = [NSMutableString string];
/*Capacity表示容量,可以容纳多少字符,如果超过这个存储空间,就会扩展它*/
NSMutableString *strM = [NSMutableString stringWithCapacity:10];
时间: 2024-09-20 00:16:59

iOS学习之NSString的相关文章

iOS学习之flappyBird游戏的实现

导言 在本人还是学生的时候,flappyBird这款游戏非常火爆,最后等到Android版的出来之后,也是很痴迷的玩了一把.可是,本人游戏天赋一直平平,几度玩得想摔手机.本文主要介绍如何开发iOS平台的flappyBird,游戏中使用了原本软件的图片资源,仅作学习交流使用.本人实现的flappyBird游戏包含游戏等级设定,排行榜,音效等功能. 技术点 flappyBird是单机游戏,主要涉及界面逻辑.图片资源.游戏动画.得分排行. 为了实现这几个功能,需要使用以下几个技术框架: 1)AVFou

iOS 基础类解析 - NSString、NSMutableString

iOS 基础类解析 - NSString 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 以下从苹果官网摘录的 NSString 的目录信息,大家发现了,条目太多,不过看一下分类,一共24个,好

iOS学习目录

IOS开发学习索引目录:http://blog.sina.com.cn/s/blog_814ecfa90102vwlu.html ---------------每走一步------------------------- ---------------就是进步------------------------- ================整理UI总结:==================== 控件的基本使用 : http://blog.sina.com.cn/s/blog_814ecfa901

iOS学习之 plist文件的读写

  在做iOS开发时,经常用到到plist文件,  那plist文件是什么呢? 它全名是:Property List,属性列表文件,它是一种用来存储串行化后的对象的文件.属性列表文件的扩展名为.plist ,因此通常被称为 plist文件.文件是xml格式的. Plist文件通常用于储存用户设置,也可以用于存储捆绑的信息 我们创建一个项目来学习plist文件的读写. 1.创建项目Plistdemo 项目创建之后可以找到项目对应的plist文件,打开如下图所示: 在编辑器中显示类似与表格的形式,可

ios学习笔记之基础数据类型的转换_IOS

前言 前几天在做一些小功能的时候,忽然发现有的基础数据转换都忘记了,于是赶紧整理下记下来!方便自己以后查阅,也给有需要的朋友们一些参考,下面话不多说,来看详细的内容. 一.NSString 字符串拼接: NSString *string = [NSString stringWithFormat:@"%@%@",对象,对象]; 字符串与int int intString = [newString intValue]; NSString *string = [NSString string

iOS学习笔记(十六)——详解数据库操作(使用FMDB)_IOS

iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.PlausibleDatabase.sqlitepersistentobjects等,FMDB (https://github.com/ccgus/fmdb) 是一款简洁.易用的封装库,这一篇文章简单介绍下FMDB的使用. 在FMDB下载文件后,工程中必须导入如下文件,并使用 libsqlite3.dylib 依赖包. FMDB同时兼容ARC和非ARC工

iOS学习之数据持久化详解

前言 持久存储是一种非易失性存储,在重启设备时也不会丢失数据.Cocoa框架提供了几种数据持久化机制: 1)属性列表: 2)对象归档: 3)iOS的嵌入式关系数据库SQLite3: 4)Core Data. 在iOS开发中,持久化数据的方法也并不限于属性列表.对象归档.SQLite3和Core Data.它们只是四种最常用且简单的方法.其实也可以使用传统C语言I/O调用(比如,fopen())读写数据,也可以使用Cocoa的底层文件管理工具.只不过这两种方法都需要写很多代码,并且没有必要这么做.

IOS学习和总结KVO

关于KVO,估计很多同学对KVO一样是很模糊的,都听到大家在说,面试会问,但是在开发中很少使用到,一般使用到的也是某个组件中封装使用,而这个封装又不是交由自己来完成,因此还是很模糊. 现在想来,似乎我也不清楚了,到底KVO是什么,怎么用,又会在哪种场景中使用.带着疑问,让我们一起来学习学习吧 1.什么是KVO? KVO其实就是Key-Value-Observer,也就是键值观察者,是基于KVC机制实现的另一种模式.也许有不少同学用过SVPullToRefresh或者MJRefresh刷新组件,都

iOS学习之单例模式

单例模式的作用是解决"应用中只有一个实例"的一类问题. (一)问题的提出 在一个iOS 应用的生命周期中,有时候我们只需要某个类的一个实例.例如,iOS 设备都有一个重力加速计硬件设备,要访问设备在x轴.y轴和z轴上的重力加速度,就必然要有一个类能够与硬件设备沟通来实时获得这些数据,这个类就是UIAccelerometer .除了实时地获得数据,该类还能够保持x 轴.y轴和z 轴的状态.但是这个类只需要一个实例就够了,如果有多个实例,就会占用过多的内存. 再有,当应用程序启动时,应用的