1. NSString:
OC有自己的字符串类,
常规类的创建:NSString *str = [[NSString alloc] init];
1.1 创建的方法:
//字符串创建一:
NSString *p = @"葵花宝典";
NSLog(@"%@", p);
//字符串创建二:
NSString *str = [[NSString alloc] initWithString:p];
NSLog(@"%@", str);
//字符串创建三:
NSString *str1 = [[NSString alloc] initWithUTF8String:"切记:这个是C的字符串,所以不用加@"]; // 不用加@,因为这写的是 const char*
NSLog(@"%@", str1);
//字符串创建四:
NSString *str2 = [[NSString alloc] initWithFormat:@"最常用的字符串%c", '0'];
NSLog(@"%@",str2);
[str1 release]; // <strong>用一个alloc,就用一个release释放</strong>
[str release];
[str2 release];
1.2 创建临时字符串:
临时字符串的创建没有使用alloc,所以不需要我们手动释放内存,它会自动释放
// 创建临时字符串1
NSString *str = @"OC-Hello world";
// 创建临时字符串2
NSString *str1 = [NSString stringWithUTF8String:"C语言"];
NSLog(@"%@", str1);
// 创建临时字符串3
NSString *str2 = [NSString stringWithFormat:@"便利构造器的%@ %c", @"方法", 'a'];
NSLog(@"%@", str2);
// 创建临时字符串4
NSString *str3 = [NSString stringWithString:str2];
NSLog(@"%@", str3);
1.3 initWithFormat和stringWithFormat:
这两个方法中的第一个参数中的%@,%d,%c....会用你后面写的相对应的类型的东西替换
1.4 字符串比较大小:
// 比较字符串是否相等
- (BOOL)isEqualToString:(NSString *)aString;-------->比较是否相等 记得返回值是BOOL型
// 比较字符串的大小
- (NSComparisonResult)compare:(NSString *)string; // 返回值类型是NSComparisonResult 并不是BOOL型
/* NSComparisonResult型是枚举类型
typedef NS_ENUM(NSInteger, NSComparisonResult) {NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending};
小于----- -1
等于----- 0
大于----- 1
*/
// 字符串比较
NSString *str1 = @"hdudi";
NSString *str2 = @"hdudi";
if (str1 == str2) {
NSLog(@"str1 = str2");
}else {
NSLog(@"not same");
}
// 结果是相等, 是因为这个比较的是字符串常量的地址, str1和str2指向的是同一个字符串,所以地址是一样的
#pragma mark---------1.字符串的方法
// 字符串比较
{
NSString *str1 = @"hello";
NSString *str2 = @"helloworld";
BOOL result = [str1 isEqualToString:str2];
NSLog(@"%d", result);
NSComparisonResult res = [str1 compare:str2];
if (res == NSOrderedAscending) {
NSLog(@"str1 < str2");
}
if (res == NSOrderedDescending) {
NSLog(@"str1 > str2");
}
if (res == NSOrderedSame) {
NSLog(@"str1 = str2");
}
}
1.5 字符串查找方法:
#pragma mark------------ 字符串查找
{
NSString *str3 = @"Nevermid I will find someone like you";
NSString *subStr3 = @"someone";
NSRange range = [str3 rangeOfString:subStr3];
NSLog(@"location = %lu, length = %lu", range.location, range.length);
// NSNotFound --------长整型的最大值
}
1.6 字符串提取方法:
#pragma mark---------------字符串提取:------三种
NSString *str4 = @"01234567890";
// 1. To是从头开始,截取n个长度的字符
NSString *subStr4 = [str4 substringToIndex:6];
NSLog(@"%@", subStr4);
// 2. From是从n开始截取,一直到最后
NSString *subStr5 = [str4 substringFromIndex:5];
NSLog(@"%@", subStr5);
// 3. Range是从第a个开始截取,截取b个长度的字符:a和b是NSMakeRange的两个长度
NSString *subStr6 = [str4 substringWithRange:NSMakeRange(4, 3)];
NSLog(@"%@", subStr6);
NSString *str = @"http://www.lanou3g.com";
// 1.从xx位置开始到最后结束
NSString *sub1 = [str substringFromIndex:7];
NSLog(@"%@", sub1);
// 2.从开始位置到xx结束
NSString *sub2 = [str substringToIndex:7];
NSLog(@"%@", sub2);
// 3.获取一个范围
NSString *sub3 = [str substringWithRange:NSMakeRange(11, 7)];
NSLog(@"%@", sub3);
1.7 字符串长度及拼接:
#pragma mark------------字符串的长度
{
NSString *str = [NSString stringWithFormat:@"you need cry dear!"];
NSLog(@"%lu", [str length]);
}
#pragma mark-------------字符串拼接
{
NSString *str = [NSString stringWithFormat:@"you need cry dear!"];
NSLog(@"%@", [str stringByAppendingString:@"hahahah"]);
}
1.8 字符串替换-----不可变字符串的替换:
#pragma mark-----------用一个字符串替换指定范围内的一堆字符
//将lanou3g用baidu替换
NSString *str = @"http://www.lanou3g.com";
NSString *s1 = [str stringByReplacingCharactersInRange:NSMakeRange(11, 7) withString:@"baidu"];
NSLog(@"%@", s1);
#pragma mark-----------用字符串替换字符串
// 将空格去掉
NSString *str1 = @"sgsh jjj yy";
NSString *s = [str1 stringByReplacingOccurrencesOfString:@" " withString:@""];
NSLog(@"%@", s);
1.9 检测字符串前缀和后缀:
#pragma mark--------检测字符串前缀(hasPrefix)和后缀(hasSuffix)
{
// 判断前缀:网址是否合法:http:// https://
NSString *str1 = @"http://www.baidu.com";
if ([str1 hasPrefix:@"http://"] || [str1 hasPrefix:@"https://"]) {
NSLog(@"合法");
}else
NSLog(@"不合法");
// 判断后缀:例如图片后缀:jpg png gif jpeg
NSString *imgName = @"balabala.jpg";
if ([imgName hasSuffix:@".jpg"] || [imgName hasSuffix:@".png"] || [imgName hasSuffix:@".gif"] || [imgName hasSuffix:@".jpeg"]) {
NSLog(@"合法图片后缀");
}else
NSLog(@"不合法");
// 练习:判断是否为word文件
NSString *wordName = @"OC.doc";
if ([wordName hasSuffix:@".doc"]) {
NSLog(@"是文件");
}else
NSLog(@"不是文件");
}
1.10 可变字符串:
NSMutableString是NSString的子类,创建动态可变字符串, NSMutableString继承NSString的方法:
不可变字符串的方法以string开头,有返回值,
可变字符串的方法无返回值,对字符串本身进行修改
NSMutableString在使用时最好不要直接赋值(=@“”),因为这个NSMutableString是可变字符串,他的内容应该都是append进去的
#pragma mark---------- 可变字符串 NSMutableString
{
// 可变字符串继承于NSString不可变字符串的方法。
// NSMutableString 可以使用父类的方法,以下除外:
// NSMutableString *str = @"不能用";
// 创建:
NSMutableString *str = [[NSMutableString alloc] init];
[str setString:@"hello ya "];
NSLog(@"%@", str);
// 增加/拼接
[str appendString:@"friend "];
NSLog(@"%@", str);
[str appendFormat:@"%d", 87]; // 格式化拼接
NSLog(@"%@", str);
// 插入,按指定的位置:atIndex
[str insertString:@"Oh " atIndex:0];
NSLog(@"%@", str);
// 删除 从指定位置开始,按指定的长度删除
NSRange range = {3, 5};
[str deleteCharactersInRange:range];
NSLog(@"%@",str);
// 从指定位置开始,按指定的长度替换,可能会覆盖你之前的内容,是替换,不是插入
[str replaceCharactersInRange:NSMakeRange(3, 5) withString:@"HELLO"];
NSLog(@"%@", str);
[str release];
}
1.11 例题:
{
/*
给定一个图片文件名,判断字符串中是否以“png”结尾,如果是就替换成“jpg”,如果不是,就拼接”.jpg ”。
*/
// 可变字符串
NSMutableString *str = [[NSMutableString alloc] init];
[str setString:@"hgfhfjfkf.png"];
if ([str hasSuffix:@".png"]) {
[str replaceCharactersInRange:NSMakeRange([str length] - 4, 4) withString:@".jpg"];
NSLog(@"%@",str);
}else{
[str appendString:@".jpg"];
NSLog(@"%@",str);
}
// 不可变字符串
NSString *str1 = @"hgfhfjfkf.png";
if ([str1 hasSuffix:@".png"]) {
NSLog(@"%@", [str1 stringByReplacingOccurrencesOfString:@".png" withString:@".jpg"]);
}else{
NSLog(@"%@", [str1 stringByAppendingString:@".jpg"]);
}
}