21(补充)-NSString,NSMutableString -foundation

//  main.m

//  19-NSString(NSMutableString)-foundation

//

//  Created by amesty on 15-1-18.

//  Copyright (c) 2015 itcast. All rights reserved.

//


#import <Foundation/Foundation.h>

#pragma mark NSString的创建

void stringCreat()

{

    // char *s = "A String!"; // C语言中的字符串

    

    // 这种方式创建出来的字符串是不需要释放的

    

    NSString *str1=@"A string!";

    

    NSString *str2=[[NSString alloc]init];

    str2=@"A String";

    [str2 release];

    // 不需要管理内存

    NSString *str3 = [[NSString alloc]  initWithString:@"A String"];

    

    NSString *str4 = [[NSString allocinitWithUTF8String:"A String!"];

    [str4 release];

    str4 =[NSString stringWithUTF8String:"A String!"];

    

    NSString *str5 = [[NSString allocinitWithFormat:@"My age is %i and height is %.2f"191.55f];

    

    // 这句代码放在中间会造成2个错误:

    // 1.前面创建的字符串没有被释放

    // 2.后面创建的字符串会释放过度,造成野指针错误

    // str5 = [NSString stringWithFormat:@"My age is %i and height is %.2f", 19, 1.55f];

    NSLog(@"str5:%@", str5);

    [str5 release];

    

    str5 = [NSString stringWithFormat:@"My age is %i and height is %.2f"191.55f];

    

    

}

#pragma mark test方法

void test(NSString **str) {

    *str = @"123";

    // s = @"123";

}

# pragma mark 从文件中读取文本创建字符串

void stringCreate2()

{

    // 从文件中读取文本

    NSString *path = @"/Users/amesty/Desktop/c语言/test.txt";

    // 这个方法已经过期,不能解析中文

    // NSString *str1 = [NSString stringWithContentsOfFile:path];

    

    // 定义一个NSError变量

    NSError *error;

    // 指定字符串编码为UTF-8: NSUTF8StringEncoding

    NSString *str1 = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];

    if (error == nil) { // 没有错误信息

        NSLog(@"读取文件成功:%@", str1);

    } else {

        NSLog(@"读取文件失败:%@", error);

    }

    

    NSURL *url = [NSURL URLWithString:@"file:///Users/amesty/Desktop/c语言/test.txt"];

    NSString *str2 = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];

    NSLog(@"%@", str2);

    

    NSURL *url2 = [NSURL URLWithString:@"http://www.baidu.com"];

    NSString *str3 = [NSString stringWithContentsOfURL:url2 encoding:NSUTF8StringEncoding error:nil];

    NSLog(@"%@", str3);

}


#pragma mark 字符串的导出  原子操作保证完整性

void stringExport()

{   NSString *str=@"123456我是字符串!!!!";

    // 如果文件不存在,会自动创建文件

    // 如果文件夹不存在,会直接报错

    NSString *path = @"/Users/amesty/Desktop/c语言/test.txt";

    NSError *error;

    // 编码指定错误也会报错

    // YES代表要进行原子性操作,也就是会创建一个中间的临时文件

    [str writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:&error];

    if (error) {

        NSLog(@"写入失败");

    }

    else  NSLog(@"写入成功");

}


#pragma mark 字符串的大小写处理

void caseTest() {

    NSString *str = @"GuangDong";

    // 转成大写

    NSLog(@"大写:%@", [str uppercaseString]);

    // 转成小写

    NSLog(@"小写:%@", [str lowercaseString]);

    // 首字母变大写,其他字母变小写

    NSLog(@"首字母变大写:%@", [@"aGE" capitalizedString]);

}


#pragma mark 字符串的比较

void compare(){

    BOOL result=[@"abc" isEqualToString:@"123"];

    NSLog(@"%i", result);

    // NSOrderedAscending  右边的字符串比左边大

    // NSOrderedSame  两个字符串的内容相同

    // NSOrderedDescending  左边的字符串比右边的大

    //以上是NSComparisonResult的三个返回值

    

    NSComparisonResult result2= [@"abc" compare:@"abc"];

    if (result2==NSOrderedSame) {

        NSLog(@"两个字符串的内容相同");

    }

    else if(result2== NSOrderedAscending)

    {   NSLog(@"右边 > 左边");}

    else if (result2==NSOrderedDescending)

    {   NSLog(@"右边 < 左边");}

}

#pragma mark 字符串的搜索

void search() {

    NSString *str = @"123456456.txt";

    

    NSLog(@"是否以22开头:%i", [str hasPrefix:@"22"]);

    NSLog(@"是否以txt结尾:%i", [str hasSuffix:@"txt"]);

    // 搜索字符串

    NSRange range=[str rangeOfString:@"456"];

    //  range.length == 0

    if (range.location==NSNotFound) {

        NSLog(@"找不到");

    }

    else {

        NSLog(@"找到的范围是:%@",NSStringFromRange(range));

    }

    // 从尾部开始搜索字符串

    

    range =[str rangeOfString:@"456" options:NSBackwardsSearch];

    NSLog(@"找到的范围是:%@",NSStringFromRange(range));

    

    // 指定范围进行搜索

   //  [str rangeOfString:@"456"  options:NSBackwardsSearch range:(NSRange)];

}


#pragma mark 字符串的截取

void subString() {

    NSString *str = @"123456";

    

    // 从索引3开始截取到尾部(包括3)

    NSLog(@"%@", [str substringFromIndex:3]);

    

    // 从头部开始截取到索引3之前(不包括3)

    NSLog(@"%@", [str substringToIndex:3]);

    

    // 指定范围进行截取

    NSRange range = NSMakeRange(23);

    NSLog(@"%@", [str substringWithRange:range]);

    

    NSString *str2 = @"a-b-c-d-5";

    NSArray *array = [str2 componentsSeparatedByString:@"-"];

    NSLog(@"%@", array);

    

    NSString *str3 =  [array objectAtIndex:0];

    NSLog(@"%@", str3);

}


#pragma mark 与路径相关

void pathTest() {

    // 快速创建一个自动释放的数组

    NSMutableArray *components = [NSMutableArray array];

    [components addObject:@"Users"];

    [components addObject:@"MJ"];

    [components addObject:@"Desktop"];

    // 将数组中的所有字符串拼接成一个路径

    NSString *path = [NSString pathWithComponents:components];

    NSLog(@"%@", path);

    

    // 将路径分解成一个数组

    NSArray *cmps = [path pathComponents];

    NSLog(@"%@", cmps);

    

    // path是一个字符串常量,是不可变的

    path = @"/users/mj/test";

    // 判断是够为绝对路径(依据是前面有无/

    NSLog(@"%i", [path isAbsolutePath]);

    NSLog(@"最后一个目录:%@", [path lastPathComponent]);

    // 删除最后一个目录

    NSLog(@"%@", [path stringByDeletingLastPathComponent]);

    // 在最后面拼接一个目录

    NSLog(@"%@", [path stringByAppendingPathComponent:@"abc"]);

}


#pragma mark 拓展名处理

void extension() {

    NSString *str = @"/User/MJ/test.txt";

    

    NSLog(@"拓展名:%@", [str pathExtension]);

    // 删除拓展名

    NSLog(@"%@", [str stringByDeletingPathExtension]);

    // 添加拓展名

    NSLog(@"%@", [@"abc" stringByAppendingPathExtension:@"mp3"]);

}


#pragma mark 其他用法

void other() {

    NSString *str = @"12";

    int a = [str intValue];

    NSLog(@"%i", a);

    

    // 计算字数,不是计算字符数

    NSLog(@"length=%zi", [@"我是字符串123" length]);

    

    // 取出对应的字符

    unichar c = [@"abc" characterAtIndex:0];

    NSLog(@"%c", c);

    

    // 返回C语言中的字符串

    const char *s = [@"abc" UTF8String];

    NSLog(@"%s", s);

}

#pragma mark 可变字符串的创建

void stringCreate() {

    // 预先分配10个字数的存储空间

    NSMutableString *str = [[NSMutableString allocinitWithCapacity:10];

    // 设置字符串内容

    [str setString:@"1234"];

    

    // 拼接一个字符串

    [str appendString:@"567"];

    // 拼接字符串

    [str appendFormat:@"age is %i and height is %.2f"271.55f];

    

    // 替换字符串

    NSRange range = [str rangeOfString:@"height"];

    //NSRange range = NSMakeRange(7, 3);

    [str replaceCharactersInRange:range withString:@"no"];

    

    // 插入字符串

    [str insertString:@"abc" atIndex:2];

    

    // 删除字符串

    range = [str rangeOfString:@"age"];

    [str deleteCharactersInRange:range];

    

    NSLog(@"%@", str);

    

    // 释放对象

    [str release];

}

int main(int argc, const char * argv[])

{

    

    

    @autoreleasepool {

        //  stringExport();

        // insert code here...

        compare();

        NSLog(@"Hello, World!");

        

    }

    return 0;

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值