//
// main.m
// OC_4NSString
//
// Created by YIem on 15/11/27.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//
import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
// SDK 软件开发工具包
// Software Developmebt Kit
// API 应用编程接口
// Application Programming Interface
// 学习新类的方式
// 1. 看SDK头文件 在Xcode中进入对应的.h头文件查看
// 2.1.看SDK帮助文档 搜索信息
// 2.2. 通过Dash查看API帮助文档
// 学习新类的步骤
// 1.看继承关系
// 2.看初始化
if 0
// 不可变字符串 NSString
pragma mark - 字符串创建
NSString * str1 = [[NSString alloc] initWithString:@"字符串"];
NSString *str2 = [NSString stringWithString:@"这还是一个字符串"];
// 创建字符串
// 字面量 简化消息语法的创建过程
NSString *str3 = @"最终版";
NSLog(@"%@ %@ %@", str1, str2, str3);
// 转化字符串 CString->OCtring
NSString *str4 = [NSString stringWithUTF8String:"C语言字符串"];
NSLog(@"str4: %@", str4);
// 转化字符串 OC->C // 中文无法转化
NSLog(@"CString: %s",str4.UTF8String);
/* 万能转换公式 */
// 作用1.: 可以将任意有占位符的数据转化为字符串对象
// int -> string
NSString *str5 = [NSString stringWithFormat:@"%d", 100];
NSLog(@"str5: %@", str5);
// string -> int/long/NSInteger
NSLog(@"int: %d", str5.intValue);
// 作用2.: 混合拼接
NSString *str6 = [NSString stringWithFormat:@"%@ 拼接字符串 %ld", str5, str5.integerValue];
NSLog(@"str6:%@", str6);
endif
pragma mark - 子字符串
if 0
NSString *str1 = @"妈妈说再也不用担心我的字符串不够长啊长啊长";
// 字符串长度
NSLog(@"length: %lu", str1.length);
// formIndex 取后缀
NSString *str2 = [str1 substringFromIndex:16];
NSLog(@"str2: %@", str2);
NSString *str3 = [str1 substringToIndex:7];
NSLog(@"str3: %@", str3);
// withRang2 取中间
// NSRange r = {3, 4};// C语言
// NSString *str4 = [str1 substringWithRange:r];
// NSLog(@"str4: %@", str4);
// 通过NSMakeRange()函数快速创建一个结构体变量
NSString *str4 = [str1 substringWithRange:NSMakeRange(3, 4)];// 以某一点开始向后取4个单位
NSLog(@"str4: %@", str4);
endif
if 0
NSString *str1 = @"大娃三爷bata";
// 前缀判断
if ([str1 hasPrefix:@"大娃"]) {
NSLog(@"有前缀");
}
// 后缀判断
if ([str1 hasSuffix:@"bata"]) {
NSLog(@"有后缀");
}
// 中间判断(包含)
if ([str1 containsString:@"三爷"]) {
NSLog(@"有包含");
}
// 相等判断
NSString *str2 = @"大娃三爷bata";
if (str1 == str2) {
NSLog(@"字符串地址相等, 是不是同一个字符串");// 一般不用
}
if ([str1 isEqualToString:str2]) {
NSLog(@"判断字符串内容是否相同");// 用户名 密码 用
}
// 字符串比较 升序 降序 相同
NSString *str3 = @"iPhone6";
NSString *str4 = @"iPhone7";
// NSComarisonResult 比较结果
NSComparisonResult r = [str3 compare:str4];
if (r == NSOrderedAscending) {
NSLog(@"升序");
} else if(r == NSOrderedDescending){
NSLog(@"降序");
} else if (r == NSOrderedSame){
NSLog(@"相同");
}
endif
pragma mark - 字符串修改
if 0
// 只适用与英语
NSString *str1 = @"I love you";
// 字符串改变
NSLog(@"%@", str1);
// 所有首字母大写
NSLog(@"%@", str1.capitalizedString);
// 全部字母大写
NSLog(@"%@", str1.uppercaseString);
// 全部字母小写
NSLog(@"%@", str1.lowercaseString);
// 不可变字符串的修改操作 都是产生了新的字符串
NSString *str2 = @"德玛西亚";
// 字符串拼接 append
NSString *str3 = [[[str2 stringByAppendingString:@"之力"] stringByAppendingString:@" 卞一"]stringByAppendingString:@" 可以继续添加"];
NSLog(@"str3: %@", str3);
// 字符串替换 replace
NSString *str4 = [[[str3 stringByReplacingOccurrencesOfString:@"之力" withString:@"皇子"]stringByReplacingOccurrencesOfString:@"卞一"withString:@"YIem"]stringByAppendingString:@"的儿子是何开"];
NSLog(@"str4: %@", str4);
endif
if 0
// 练习
NSString *str1 = @"随便";
// 1.使用拼接append添加字符串@"写一个字符串"
// 2.使用替换replace将@"随便"替换为@"特意"
// 3.添加字符串@".avi"
// 4.判断是否以@"avi"结尾 如果是获取@"avi"后缀 添加到字符串开头 然后将@"avi"替换为@"rmvb"
// 5.从字符串中获取子串@"rmvb" 和源字符串比较打印升序/降序
NSString *str2 = [[[str1 stringByAppendingString:@"写一个字符串"]stringByReplacingOccurrencesOfString:@"随便"withString:@"特意"]stringByAppendingString:@".avi"];
NSLog(@"%@", str2);
endif
pragma mark - 可变字符串 NSMutableString
if 0
// 可变对象 一般创建空对象
NSMutableString *mStr = [NSMutableString string];
NSLog(@"%@", mStr);
// 添加 append
[mStr appendString:@"字符串"];
[mStr appendString:@"又一个字符串"];// 添加
NSLog(@"%@", mStr);
// 替换replace
[mStr replaceCharactersInRange:NSMakeRange(0, 3) withString:@"随便写点什么"];
NSLog(@"%@", mStr);
// 插入
[mStr insertString:@"内容" atIndex:5];
NSLog(@"%@", mStr);
// 删除
[mStr deleteCharactersInRange:NSMakeRange(3, 3)];
NSLog(@"%@", mStr);
// 子面量创建可变字符串 mutableCopy 可变拷贝
NSMutableString *mStr1 = [@"" mutableCopy];
NSMutableString *mStr2 = [NSMutableString stringWithString:@""];
endif
return 0;
}