黑马程序员——黑苹果的日记(6)——Foundation之NSString

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------


一Foundation框架

1概念:框架是由许多类、方法、函数、文档按照一定的逻辑组织起来的集合

大约有80个框架

2  Foundation框架的作用
   Foundation框架是基础
   Foundation框架包含了很多开发中常用的数据类型:
  结构体
   枚举
  类

3使用Foundation框架

使用Foundation框架中的功能引入
#import <Foundation/Foundation.h>

4修改了系统的文件,引起的错误
解决方案:删除Xcode的缓存,
缓存路径是 /Users/用户名/Library/Developer/Xcode/DerivedData

要看到上述文件夹, 在终端敲指令显示隐藏文件夹


二   NSString

1、NSString类
一个NSString对象就代表一个字符串
叫NSString为字符串类

2、NSString的创建方式
1) 最直接的方式(这是常量字符串)
NSString *str = @"abc";
NSString *st3 = @"abc";

3 格式化的方式(堆区)
NSString *st2 = [NSString stringWithFormat:@"%@", @"jack"];

NSString *str = [[NSString alloc] initWithFormat:@"My age is %d", 10];


4 "字符串常量池"

NSString *str1 = @"你好123";
NSString *str2 = [[NSString alloc] initWithFormat:@"你好%d", 123];
NSString *str3 = [NSString stringWithFormat:@"你好%d", 123];
// 比较下面的3个字符串与上面的3个字符串的地址
NSString *str11 = @"你好123";
NSString *str21 = [[NSString alloc] initWithFormat:@"你好%d", 123];
NSString *str31 = [NSString stringWithFormat:@"你好%d", 123];
结果为不同

下面的方式是直接把字符串的地址进行赋值, 所以地址一定都是一样的。
NSString *s1 = str1;
NSLog(@"%@----%@", s1, str1); 
NSLog(@"%p---%p", s1, str1);


5通过NSString进行文件读写

方式: 直接根据给定的路径来读写文件
 文件写入: [str1 writeToFile:@"路径" atomically:YES
encoding:NSUTF8StringEncoding error:nil];
 文件读取: [NSString stringWithContentsOfFile:@"路径"
    encoding:NSUTF8StringEncoding error:nil];

根据NSURL对象来读取文件内容。
* [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:

   &err];


6 NSString的常见方法:


- (NSString *)uppercaseString; 

全部字符转为大写字母

- (NSString *)lowercaseString 

全部字符转为小写字母

- (NSString *)capitalizedString

首字母变大写,其他字母都变小写。

一个句子中有多个单词,那么会将每个单词的首字母 变成大写,其余字母变成小写


- (BOOL)isEqualToString:(NSString *)aString;
两个字符串的内容相同就返回YES, 否则返回NO

注意: == 比较的是两个对象的地址是否相同, 不是字符串内容

- (NSComparisonResult)compare:(NSString *)string;
这个方法用来比较两个字符串内容的大小
比较方法: 逐个字符地进行比较ASCII值,返回NSComparisonResult作为比较结果

NSComparisonResult是一个枚举,有3个值:

如果左侧 > 右侧,返回NSOrderedDescending,
如果左侧 < 右侧,返回NSOrderedAscending,
如果左侧 == 右侧返回NSOrderedSame

- (NSComparisonResult) caseInsensitiveCompare:(NSString *)string;
忽略大小写进行比较,返回值与compare:一致

- (BOOL)hasPrefix:(NSString *)aString;
是否以aString开头

- (BOOL)hasSuffix:(NSString *)aString;
是否以aString结尾
- (NSRange)rangeOfString:(NSString *)aString;
用来检查字符串内容中是否包含了aString
如果包含, 就返回aString的范围
如果不包含, NSRange的location为NSNotFound, length为0

反方向搜索:[str rangeOfString: @”str” options: NSBackwardsSearch]; // 从后向前 搜索

- (NSString *)substringFromIndex:(NSUInteger)from;

从指定位置from开始(包括指定位置的字符)到尾部

- (NSString *)substringToIndex:(NSUInteger)to;
从字符串的开头一直截取到指定的位置to,但不包括该位置的字符

- (NSString *)substringWithRange:(NSRange)range;
按照所给出的NSRange从字符串中截取子串

- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement;
用replacement替换target

- (NSUInteger)length;
返回字符串的长度(有多少个字符,无论中文字符、英文字符等等,一个字符就是一个字符)

- (unichar)characterAtIndex:(NSUInteger)index;
返回index位置对应的字符

字符串转为基本数据类型

- (double)doubleValue;
- (float)floatValue;
- (int)intValue;
- (char *)UTF8String; // 在操作SQLite数据库时才会用到

转为C语言中的字符串。

/** 参考代码:
 C语言字符串:
 char *name = “steve”;
 NSString *s1 = @"123”; char *s2 = s1.UTF8String; printf("%s", s2);
 */
去除所有的空格
[str stringByReplacingOccurrencesOfString:@" " withString:@""]
去除首尾的空格
[str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];



7   NSString的不可变性

* NSString *s1 = @"aa"; s1 = @"bb";
这种情况只是指针变量s1 重新指向了, 分配好的字符串空间中的内容并没有发生改变。

不适用NSString进行拼接





































































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值