关于NSString的方法知识简单了解
简单分享下,希望大牛们多多指点迷津,逐步修改,完善不足支持。借鉴之处,还请谅解
void test(NSString **str){ //C语言函数,指向指针
*str=@"123";
}
int main(int argc, const char * argv[]) {
@autoreleasepool {
#pragma mark NSString创建
NSString *string=@"string"; //char *s="string";C语言的字符串
//这种方式创建不需要内存释放
NSString *string1=[NSString stringWithString:@"string"];
NSString *string2=[NSString stringWithFormat:@"string"];
NSString *string3=[NSString stringWithUTF8String:"string"];
//传入C语言的字符串
//这种方式创建:需要管理内存释放
NSString *str0=[[NSString alloc]initWithFormat:@"string"];
NSString *str1=[[NSString alloc]initWithString:@"str0"];
NSString *str2=[[NSString alloc]initWithUTF8String:"string"];
//前面创建字符串未被释放,后面的创建会释放过渡,造成野指针错误
NSError *error; //定义一个NSError变量
NSString *path=@"/Users/administrator/Desktop/void.txt";
NSString *st=[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; //读取文件路径中的文件内容,<注意是否内读曲中文字>
NSURL *url=[NSURL URLWithString:@"https://www.baidu.com/?tn=92765401_hao_pg"];
//读取地址路径的内容:file:// 或远程文本 https://
//file:///Users/administrator/Desktop/void.txt
NSString *st1=[NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
NSLog(@"%@",st1);
#pragma mark 指向指针和指针
NSString *s=@"456"; //指针用法
test(&s); // 传递指针地址,改变变量指向的对象 **(&s) = *s = @"123"
NSLog(@"%@",s); // 123
#pragma mark NSString常用方法
NSString *path1=@"/Users/administrator/Desktop/test.txt";
[string writeToFile:path1 atomically:YES encoding:NSUTF8StringEncoding error:&error];
//yes 代表进行原子性操作,也就会创建一个中间的临时文件
if(error){
NSLog(@"写入失败"); //如果文件夹不存在
}else {
NSLog(@"写入成功"); //如果文件不存在,会自动创建
} //字符串导出到文件路径中的文件内容
#pragma mark NSString大小写
str0=[string uppercaseString]; //全大写
str0=[string lowercaseString]; //全小写
str0=[string capitalizedString]; //首字母大写
#pragma mark NSString比较
BOOL result=[str1 isEqualToString:str2]; //比较字符串内容是否相同,1/0
NSComparisonResult result1=[str1 compare:str2];
//结果为NSOrderedAscending 生序(右边大) NSOrderedSame 相同, NSOrderedDescending 降序(左边大)
#pragma mark NSString搜索
BOOL result2=[string hasPrefix:@"str"]; //是否以 str 开头
BOOL result3=[string hasSuffix:@"ing"]; //是否以 ing 结尾
NSRange range=[string rangeOfString:@"rin"]; //从头搜索 rin 在string中的位置、宽度
if(range.location==NSNotFound){
NSLog(@"不能找到");
}
range=[string rangeOfString:@"in" options:NSBackwardsSearch];//从尾部开始搜索 in
range=[string rangeOfString:@"in" options:NSBackwardsSearch range:range];//在range范围 搜索
string=[string substringFromIndex:2]; //从索引2 开始截取
string=[string substringToIndex:2]; //从0开始截取到 索引2之前(不包括2)
string=[string substringWithRange:range]; //从指定范围截取
NSString *stringto=@"a-b1-c-d";
NSArray *array=[stringto componentsSeparatedByString:@"-"]; //将字符串分割成数组元素,逗号隔开
#pragma mark NSString与路径相关
NSMutableArray *ar=[NSMutableArray array];
[ar addObject:@"Users"];
[ar addObject:@"administrator"];
[ar addObject:@"Desktop"];
NSString *pth=[NSString pathWithComponents:ar]; //将数组中所有字符串拼接成一个路径
NSArray *arr=[pth pathComponents]; //将路径分解成一个数组
pth=@"/Users/administrator/Desktop"; //pth是一个字符串常量,不可变
BOOL result4=[pth isAbsolutePath]; //判断是否是绝对路径(依据前有无/)
string=[pth lastPathComponent]; //返回路径的最后一个目录
string=[pth stringByDeletingLastPathComponent]; //删除最后一个目录
string=[pth stringsByAppendingPaths:@"abc"]; //在最后拼接一个目录
#pragma mark 拓展名
string=@"text.txt";
string=[string pathExtension]; //返回拓展名 txt
string=[string stringByDeletingPathExtension]; //删除拓展名 .txt
string=[string stringByAppendingPathExtension:@"mp3"]; //添加拓展名 .mp3
string=@"12";
int a=[string intValue]; //转换成整型
unsigned int b=string.length; //计算字数
unichar c=[@"abcdef" characterAtIndex:2]; //取出对应的字符
const char *d=[string UTF8String]; //返回C语言的字符串
#pragma mark NSMutableString
NSMutableString *s1=[[NSMutableString alloc]initWithCapacity:10];
//指定容量,预先分配10个字符串空间,提高效率
[s1 setString:@"123"]; //设置字符串内容
[s1 appendString:@"456"]; //拼接字符串
[s1 appendFormat:@"age is %i",18]; //拼接字符串(格式输出)
NSRange ran=[s1 rangeOfString:@"age"]; //找到age 的范围
[s1 replaceCharactersInRange:ran withString:@"number"]; //number 替换age
[s1 insertString:@"789" atIndex:6]; //在索引 位置插入
[s1 deleteCharactersInRange:ran]; //删除指定范围 的字符串