NSString字符串类型-学习总结
1.字符串的创建
(1)创建常量字符串
NSString *str = @"This is a String"; //str是变量名
(2)创建空的字符串,给字符串赋值
NSString *str = [NSString alloc] init];
str = @"科比 布莱恩特"; //直接赋值
(3)花样赋值
<1>使用初始化方法:initWithFormat:根据一定的字符串格式来初始化字符串对象,将格式串中的内容写入字符串对象空间内
NSString *str = [[NSStringalloc] initWithFormat:@"iphon%@",@"e6"];
<2>使用便利构造器stringWithFormat:来快速创建对象,内部进行alloc以及初始化操作,内部将initWithFormat初始化方法来进行初始化
NSString *str =[ NSString stringWithFormat:@"逗比%@",@"儿"];
<3>用标准C语言创建字符串
char *name = "say hello";
NSString *sayHello = [[NSString alloc] initWithUTF8String:name];
2.求取字符串的长度(关键词:length)
NSString *str =@"明明知道相思苦";
NSUInteger length = str.length; //或者 [str length]也可以 length 在OC中是属性存在,可以直接调用
NSLog(@"%ld",length);
3.字符串的拼接(关键词:append)
NSString *str1 = @"波多野结衣";
NSString *str2 = @"是AV女忧";
方法1:
NSString *str3 = [str1 stringByAppendingString:str2]; //由于NSString是不可变字符串,因此只能返回新的字符串,元字符串不变
方法2
NSString *str4 = [str1 stringByAppendingFormat:@"%@是小日本%@",@"18,"@"的明星"];
4,字符串的截取(关键词:sub)
NSString *str = @"say goodbye";
<1>从指定位置开始(包括该指定位置的字符),截取之后所有字符
NSString *str1 = [str substringFromIndex:3];
<2>从字符串开头一直截取到指定位置,但是不包括该位置的字符
NSString *str2 = [str substringToIndex:3];
<3>按照所给的位置和长度,从字符串中截取子串
NSString *str3 = [str substringWithRange:NSMakeRange(2, 2)]; // NSMakeRange 快速构建NSRange(下标,长度)
5,字符串大小写转换
NSString *str = @"xiAo m/eI mei";
NSLog(@"%@",[str uppercaseString]); //全部改成大写
NSLog(@"%@",[str lowercaseString]); //全部改成小写
NSLog(@"%@",[str capitalizedString]); //首字符大写,包括空格和字符断开的情况,也改成大写
6.字符串各种比较
NSString *str1 = @"hello boby";
NSString *str2 = @"hello dowhat";
<1> 比较字符串的地址
BOOL b = (str1 == str2); // 比的是两个字符串的内存地址
NSLog(@"%d",b);
<2>两个字符串的值是否相等
BOOL b = [str1 isEqualToString:str2]; //比的两个字符串的内容是否相同,返回一个BOOL类型值
NSLog(@"%d",b);
<3> 对字符串大小进行比较
NSComparisonResult result = [str1 compare:str2]; //按照字母进行比较,设置一个枚举的类型返回值,返回值(NSOrderedSame NSOrderedAscending NSOrderedDescending)
switch (result) {
case NSOrderedSame:
NSLog(@"相同");
break;
case NSOrderedAscending:
NSLog(@"前小后大");
break;
case NSOrderedDescending:
NSLog(@"前大后效");
break;
default:
break;
}
<4>判断字符串是否以某个字符开头/结尾(关键词has)
BOOL b3 = [str1 hasPrefix:@"boby"]; //对字符串前缀进行判断
BOOL b4 = [str2 hasSuffix:str1]; // 对字符串后缀进行判断
<5>查找字符串中是否包含某字符
NSRange range = [str rangeOfString:@"hi"];
if (range.location != NSNotFound) {
}
else{
}
7.字符串拷贝
NSString *str8 = [NSString stringWithString:str3]; //字符串属性遵循copying协议
NSLog(@"%@",str8);
8.字符中内容的替换(关键字replacing)
NSString *string1 = @"abcdefg",*string2 = @"higkllmn";
NSString *str1 = [string1 stringByReplacingCharactersInRange:NSMakeRange(2, 3) withString:string2]; //从中间截取几个字符串替换为withString后面的字符
NSString *str2= [string1 stringByReplacingOccurrencesOfString:@"a"withString:@"ABV"]; //把字符串中的出现过的字符"a"全部替换为"ABV"
9. 可变的字符串类型
NSString是不可变字符串,不能删除字符或添加字符(上面的操作都会开辟一个新的字符串来保存添加或替换后的字符串,原串并不会改变).
Cocoa提供了一个 NSString的子类: NSMutableString.由于是NSString的子类,所以NSMutableString继承了NSString的所有方法.
当我们创建可变的字符串(或者之后学习的所有可变数组,字典,集合等)一定要先初始化,再进行使用.
<1>初始化方法
NSMutableString *mutablestring = [NSMutableString string]; //类方法初始化(使用极少)
NSMutableString *mstr1 = [[NSMutableString alloc] init]; //init实例方法初始化
NSMutableString *mstr2 = [[NSMutableString alloc] initWithCapacity:0]; //指定初始化方法,capacity是申请内存空间,但兄台那个会根据字符串的增减自动调整内存空间大小(工程中使用较多)
<2>自己独有的SDK
[mstr1 setString:@"嘿嘿嘿"]; //对一个字符串进行赋值或重置(替换原来的内容)
NSMutableString *mstr3 = [NSMutableString stringWithFormat:@"四是四,十是十,四十是四十"];
[mstr3 insertString:@"逗比"atIndex:1]; //插入一个字符串,在某一个位置
[mstr3 deleteCharactersInRange:NSMakeRange(3, 2)]; //删除某一个范围内的字符串
NSMutableString *m1 = [NSMutableStringstringWithCapacity:0];
NSMutableString *m2 = [NSMutableStringstringWithString:@"Tom"];
[m1 appendString:@"哈哈"]; //给字符串赋值(OC比较灵活)
[m1 appendFormat:@"age is %d",12]; //在后面插入某一段字符串
[m1 replaceCharactersInRange:NSMakeRange(3, 2) withString:@"逗比"]; //替换掉字符窜中的内容,在自己选择位置
NSString字符串类型-学习总结的更多相关文章
- C++学习日记(二)————初始字符串类型
使用频率高,但操作复杂的数据有哪些? 做下总结: int; double;float;char;bool这些类型用的比较频繁,但并不复杂.但对于字符串来说(char数组)用的频繁但操作又复杂,只能用一 ...
- Python学习笔记(二):字符串类型
在上一篇随笔(https://www.cnblogs.com/g-qiang/p/10448813.html)中,说到 Python 有六种标准数据类型,而数字类型和字符串类型又是其中基本的数据类型. ...
- Python学习笔记(三)字符串类型及其操作(2)
1.字符串的表示 字符串是字符的序列表示,可以由一对单引号(‘).双引号(“)或三引号(’‘’)构成.其中,单引号.双引号和三引号都可以表示单行字符串,但是只有三引号可以表示多行字符串 在使用双引号时 ...
- 学习笔记:MySQL字符串类型
字符串类型 a) char和varchar 1.都需要指定字符的长度,char中的长度是字符的长度,而varchar的长度是字节的长度 2. char中指定的长度就是实际占用的长度,而 ...
- python学习笔记(5-1)-基本数据类型-字符串类型及操作
五.字符串处理函数 len(x):字符串x的长度.如len("12345")结果为5 str(x):任意类型x所对应的字符串形式. >>> str(123) ...
- mysql学习1:数据类型:数字型,日期和时间,字符串类型(总结)
mysql数据类型:数字型,日期和时间,字符串类型 摘要 MySQL中定义数据字段的类型对数据库的优化是非常重要的: MySQL支持多种类型,大致可以分为三类,如下. 数字类型 整数:tinyint. ...
- Python3中的字符串函数学习总结
这篇文章主要介绍了Python3中的字符串函数学习总结,本文讲解了格式化类方法.查找 & 替换类方法.拆分 & 组合类方法等内容,需要的朋友可以参考下. Sequence Types ...
- Redis常用命令入门1:字符串类型命令
Redis总共有五种数据类型,在学习的时候,一定要开一个redis-cli程序,边看边练,提高效率. 一.最简单的命令 1.获得符合规则的键名列表 keys * 这里的*号,是指列出所有的键,同时*号 ...
- NSString字符串
要把 “2011-11-29” 改写成 “2011/11/29”一开始想用ios的时间格式,后来用NSString的方法搞定. [string stringByReplacingOccurrences ...
随机推荐
- POJ3484 Showstopper (二分+字符串处理)
POJ3484 Showstopper 题目大意: 每次给出三个数x,y,z,用这三个数构成一个等差数列,x为首项,y是末项,z是公差 总共给出n组x,y,z( n待定),求这n组数列中出现次数为奇数 ...
- pendingIntent初步_什么是pendingIntent
pendingIntent字面意义:等待的,未决定的Intent. 要得到一个pendingIntent对象,使用方法类的静态方法 通过getActivity(Context context, int ...
- arm+linux 裸机环境搭建之初试minicom+dnw烧写uboot
下面的步骤将会实现在linux下面使用dnw+minicom来烧写uboot 一.安装minicom 下载地址:http://download.csdn.net/detail/king_bingge/ ...
- Guava 15新特性介绍
原文:http://www.javacodegeeks.com/2013/10/guava-15-new-features.html Guava 是众所周知的google出品的开源工具包,十分好用,本 ...
- Python核心编程(第八章)--条件和循环
如果一个复合语句(if子句,while或for循环)的代码仅仅包含一行代码,可以和前面的语句写在同一行上: elif语句(else-if) 条件表达式(三元操作符) X if C else Y 计 ...
- http head
Accept HTTP_ACCEPT Accept-Charset HTTP_ACCEPT-CHARSET Accept-Encoding HTTP_ACCEPT-ENCODING Accept-La ...
- Oracle 序列的应用
Oracle创建序列,删除序列,得到序列 序列的创建 create sequence seq_newsId increment by 1 start with 1 maxvalue 999999999 ...
- Java虚拟机--虚拟机编译器
void sspin() { short i; for (i = 0; i < 100; i++) { ; // Loop body is empty }} Method void sspin( ...
- Powershell过滤管道结果
通过管道可以过滤某些对象和对象的属性,这个功能很实用,因为很多时候我们并不是对所有的结果感兴趣,可能只会对某些结果感兴趣.如果要过滤对象可以使用Where-Object:如果要过滤对象的属性,可以使用 ...
- URAL 1029
题目大意:M层N列的矩阵(各元素均为正整数),找出一个路径从第一层到达第M层,使得路径上的所有数的和是所有可达路径中最小的,每次上到下一层以后就不能再上去,依次输出路径上的各点在所在层的列数. KB ...