Foundation-NSString类
来源:互联网 发布:visual foxpro是编程吗 编辑:程序博客网 时间:2024/05/17 02:22
一:Foundation框架:苹果公司提供给我们的工具箱,许多类(有属性,方法),闭源的,看不到代码。
》1:目标:学习如何使用Foundation框架
》2:Foundation中的所有的类文件都是以NS开头,方便使用
》3:NSObject(基类),NSString
》4:类:有属性,方法;能够通过这个类文件作为模板,来创建对象
二:NSString类
》1:@”abd“ :常量,一旦创建完成就不能够再改变
需要一个相符的变量来接收,创建字符串的方式
(1) NSString *str = @"abd"; //[[ NSString alloc]initWithString:@"abd"];
NSLog(@"%@",str);
(2)NSString *str1 = [NSString new];
(3) NSString *str2 = [[ NSString alloc]init];
(4) 所有的初始化方法最终的目的都是返回相对应的对象
(5) NSString *str3= [NSString stringWithFormat:@"%@,%@",@"a,",@"b"]; //字符串拼接
NSString *str = @"abbhjklj;mklkl,ld" 得出以下:
》2:字符串长度的获取
NSUInteger length = [str length]; //str.length
NSLog(@"%lu",length);
》3:根据索引获得单个字符(如果你给定的索引值,超出了字符串的长度,就会导致异常 range or index out of bounds,如果你给入的是一个负数,那么获得的值就是一个乱码)
unichar c =[str characterAtIndex:8];//索引值是从0开始的
NSLog(@"%c",c);
》4:根据索引获得一个子串,原来的索引并不会发生任何改变
NSString *tempStr = [str substringFromIndex:2];//substringFromIndex从给定的索引开始(不包含该索引位置)截取 到字符串末尾
NSString *tempStr = [str substringToIndex:2]; //substringToIndex 截取字符串到给定索引的位置结束(不包含该索 引位置)
NSRange rang = {1,2}; //NSRange中有两个参数 location(起始索引的位置,包含该索引),length(要截取的长度)
NSString *tempStr = [str substringWithRange:rang]; //substringWithRange 截取字符串的某一段
NSLog(@"%@",tempStr);
》5:根据字符串,获得该字符串在另一个字符串中的索引位置
NSString *str1= @"mklkl";
NSRange tmpRange = [str rangOfString:str1];
NSLog(@"location = %d ,length = %d",tmpRange.location,tmpRange.length); //不经常用
也可以这样写
NSLog(@"rangeOfString %d",NSStingFromRange(tmpRange)); //会打印出{9,5}
可以使用NSStingFromRange把一个Range结构体转换成字符串
如果字符没有在原字符串中,应
if(tmpRange.location == NSNotFound)
{
NSLog(@"str1 不在 str 中");
}else
{
NSLog(@"rangeOfString %d",NSStingFromRange(tmpRange));
}
》6:判断字符串是否为空
if(str == nil || str.length ==0)
{
}
》7:判断字符串是否以指定的内容开头
BOOL isPerfix = [str hasPrefix:@"abb"];
NSLog(@" %@",isPerfix ? @"YES" :@ "NO"); //也可以用if 来判断
》8:判断字符串是否以指定的内容结尾(在开发中常用在 判断文件格式 .txt .avi .rmvb mkv doc)
BOOL isSuffix = [str hasSuffix:@".txt"];
NSLog(@" %@",isSuffix ? @"YES" :@ "NO");
》9:判断两个字符串是否相等
NSString *pstr1 = @"abc";
NSString *pstr2 = @"abc";
//使用== 号 判断两个字符串,实际上是判断字符串地址是否相同,如果地址相同的话,两个字符串相等。
if(pstr1 == pstr2)
{
NSLog(@"pstr1 与 pstr2");
}
》10:compare 是 isEqualToString的增强版本,返回三个参数
NSComparisonResult result = [pstr1 compare pstr2];
如果两者相等,打印出 0 (NSOrderedSame)
如果pstr1 字符的 ASCII 小于 pstr2 字符的 ASCII ,打印出 NSOrderedAscending (逐个字符比较)
如果pstr1 字符的 ASCII 大于 pstr2 字符的 ASCII ,打印出 NSOrderedDescending (逐个字符比较)
》11:模拟isEqualToString的内部实现
可以创建一个分类 NSStringExt ,在其.m 文件中实现方法
-(BOOL)myIsEqual:(NSString *)str
{
// 1:判断两个字符串指针地址是否相等,如果相等直接返回YES
if(self == str)
{
return YES;
}
//如果两个字符串的长度不相等
if(self.length != str.length)
{
return NO;
}
//逐个字符判断
for(int i=0; i<self.length;i++)
{
unichar c1= [self characterAtIndex:i];
unichar c2= [str characterAtIndex:i];
if(c1 != c2)
{
return NO;
}
return YES;
}
接着在main.m中进行调用
》12:基本数据类型(int float double char) 与字符串的相互转换
(1)int 类型转换成字符串
int a=10;
NSString *str = [NSString stringWithFormat:@"%d",a];
NSLog(@"%@",str);
(2)float类型转换成字符串
float f=2.5;
NSString *str = [NSString stringWithFormat:@"%.1f",f];
NSLog(@"%@",str);
(3)double 类型转换成字符串
double d=23.6898;
NSString *str = [NSString stringWithFormat:@"%.4f",d];
NSLog(@"%@",str);
(4)char 类型转换成字符串
char c='f';
NSString *str = [NSString stringWithFormat:@"%c",c];
NSLog(@"%@",str);
(5)字符串转换为int基本数据类型
NSString *str = @"2";
int i=[str intValue];
NSLog(@"%d",i);
(6)字符串转换为float基本数据类型
NSString *str = @"2.5";
float f=[str floatValue];
NSLog(@"%.1f",f);
(7)字符串转换为double基本数据类型
NSString *str = @"9.89";
double d=[str doubleValue];
NSLog(@"%.2f",d);
注:当你要把字符串转换成某种基本数据类型的时候,一定要确定你要转换的数据是正确的
(8)将字符串中的字母转换成大写
NSString *str = @"china";
NSString *temStr = [ str uppercaseString];
NSLog(@"%@",temStr);
(9)将字符串中的字母转换成小写
NSString *str = @"CHINA";
NSString *temStr = [ str lowercaseString];
NSLog(@"%@",temStr);
(10)将字符串中的首字母转换成大写
NSString *str = @"china";
NSString *temStr = [ str capitalizedString];
NSLog(@"%@",temStr);
(1)多个数据拼接成一个字符串
int year = 1993;
int month = 6;
int day = 17;
NSString *date = [NSString stringWithFormat:@"%d年 %d月 %d日 ",year,month,day];
NSLog(@"%@",date);
NSSting *address = @"四川,成都";
NSString *dateAndAddress = [NSString stringWithFormat:@"%@ 地址:%@",date,address];
NSLog(@"%@",dateAndAddress);
(2)在字符串的末尾追加新的字符,str1是不变的,返回回来的都是新的字符串str2
NSString *str1 = @"www.";
NSString *str2 = [str1 stringByAppendingString:@"china"];
NSLog(@"%@",str2);
(3)在指定的范围追加字符串
(4)使用新的字符替换原有的字符
NSString *str5= @"www.china.com"; //将. 换成!
NSString *str6 = [str5 stringByReplacingOccurrencesOfString:@"." withString:@"!"];
NSLog(@"%@",str6); //结果为 www!china!com
(5)在字符串中删除特定的某些字符(过滤掉某些关键字)
NSString *str7= @"www---.china.--com";
NSString *str8 = [str7 stringByReplacingOccurrencesOfString:@"-" withString:@""];
NSLog(@"%@",str8); //结果为 www.china.com
(6)去掉字符串中的空格
NSString *str9= @"www .china. com";
NSString *str10 = [str9 stringByReplacingOccurrencesOfString:@" " withString:@""];
NSLog(@"%@",str10); //结果为 www.china.com
》14:字符串文件操作
》1:将字符串写入到文件中
NSString *content = @"中国风光很好";
NSString *path = @"/Users/apple/Desktop/共享/my.txt";
//1:参数一 要给文件目录,并且要包括文件名称
//2: atomically :YES
//3:NSUTF8StringEncoding 国际通用的编码格式
//4:NSError是用来记录错误信息的
NSError *error; //如果发生了错误,它会返回&error信息
BOOL isWriteSuccess = [content writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error :&error];
{
NSLog(@"error %@",error);
}
》2:从文件中读取字符串内容
//要给出文件路径。 写入文件的时候使用的是什么编码格式,读取的时候就要用什么编码格式,这样就不会出现乱码
NSString *path = @"/Users/apple/Desktop/共享/my.txt";
NSError *error;
NSString *str = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error :&error];
if(error != nil) //若有错
{
NSLog(@"error %@",error);
}
else{
NSLog(@" str content %@",str);
}
》15:可变长度字符串
//NSMutableString继承自NSString,拥有NSString所有的属性和方法
NSMutableString *muStr = [[NSMutableString alloc]init]; //创建可变字符串
[muStr setString :@"www"]; //是初始化字符串内容
[muStr appendString:@".com"];//动态在原来的字符串末尾追加.com,这个方法已经改变了原来的字符串。而不像 stringByAppendString 方法只是返回一个新的字符串,原字符串没有改变
[muString insertString:@".china" atIndex:3]; //在指定的索引位置,插入字符串
NSRange range ={ 3,6};
[muStr deleteCharactersInRange:range]; //删除指定范围的字符串,删除的长度,一定不能超出字符串的长度,会导
致异常,Range or index out of bounds
NSRange range ={ 3,6};
[muStr replaceCharactersInRange:range withString:@"中国"]; //替换指定范围内的字符串
- Foundation基础 --- NSString类
- Foundation-NSString类
- Foundation--NSString
- Foundation-NSString
- Foundation框架 - NSString类 、NSMutableString类
- Foundation框架--NSString类字符串常用操作
- 黑马-OC-Foundation-NSString常用对象类
- Foundation框架 NSString
- Foundation框架之NSString
- 【Foundation Frame】NSString
- Foundation框架中的NSString
- Foundation框架基础 NSString
- 20-NSString-foundation
- Foundation NSString常用方法
- Foundation框架中的NSString
- Foundation框架(NSString)
- Foundation-NSString比较
- Foundation框架- NSString用法
- 用jdbc连接mysql数据库(c3p0连接池篇)
- zsh – 給你的Mac不同體驗的Terminal!
- 黑马程序员——(面试题)银行业务调度系统
- avi文件格式详解【转】
- 首次登陆mysql,密码修改
- Foundation-NSString类
- Shiro学习(6)Realm整合
- 如何搭建一个独立博客——简明Github Pages与Hexo教程
- 禁止滑动的ViewPager
- Install R-base 3.1.0 in Ubuntu 14.04
- Clique in the Divisibility Graph
- 修改MySQL数据库字符编码为UTF-8解决中文乱码
- ZTD 简单做十个好习惯总结
- Shiro学习(7)与Web整合