黑马程序员--Obbjective-C-Foundation框架中的NSString与NSMutableString的用法-我之整理

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

Foundation框架

框架是由许多类、方法、函数、文档按照一定的逻辑组织起来的集合,以便使研发程序变得更容易.

Foundation框架允许使用一些基本对象,如数字和字符串,以及一些对象集合,如数组,字典和集合,其他功能包括处理日期和时间、内存管理、处理文件系统、存储(或归档)对象、处理几何数据结构(如点和长方形)

显示隐藏文件 : defaults write com.apple.finder AppleShowAllFiles –bool true

隐藏隐藏文件 : defaults write com.apple.finder AppleShowAllFiles –bool false

---------------NSString的用法

1).直接创建方式:

    NSString *str = @"abc";

2).格式化创建:

    NSString *st2 = [NSString stringWithFormat:@"%@", @"jack"];

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

3).文本编码:

中文 :GBK(3个字节)     GB2312(3个字节)

UTF - 8:国际通用编码(2个字节)

4). 字符串写入文件:


NSError *err;//错误对象

    [str writeToFile:@"/Users/zhaoxiaohu/Desktop/" atomically:YES  encoding:NSUTF8StringEncoding error:&err];

     if (err != nil) {

        NSLog(@"写入失败!,%@",err);

    }else{

          NSLog(@"写入成功");

    }

5).字符串从文件读取:

   NSError *err;

    NSString *str = [NSString stringWithContentsOfFile:@"/Users/zhaoxiaohu/Desktop/str.txt" encoding:NSUTF8StringEncoding error:&err];

    if (err != nil) {

            NSLog(@"读取失败!,%@",err);

        }else{

            NSLog(@"读取成功");

            NSLog(@"%@",str);

        }

6).字符串比较函数:

NSComparisonResult result = [str1 compare:str2];

//比较的时候,不区分大小写,参考字符的个数进行比较

NSComparisonResult result = [str1 compare:str2 options:NSCaseInsensitiveSearch|NSNumericSearch];

返回值:

NSOrderedAscending(str1<str2)升序

NSOrderedDescending(str1>str2)降序

NSOrderedSame(str1 = str2)相等

    NSString *str1 = @"abc";   // a 97

    NSString *str2 = @"abc";   // A 65

    //取出每个字符的ASCII码值 ,比较ASCII码值大小

    //compare方法比较大小

    //compare 默认的区分大小写的

    //compare 这个函数,不能增加条件

       NSComparisonResult result = [str1 compare:str2];

    //比较的时候,不区分大小写,参考字符的个数

    NSComparisonResult result = [str1 compare:str2 options:NSCaseInsensitiveSearch|NSNumericSearch];

        switch (result) {

        case NSOrderedAscending:

            NSLog(@"str1 < str2 升序");

            break;

        case NSOrderedDescending:

            NSLog(@"str1 > str2 降序");

            break;

        case NSOrderedSame:

            NSLog(@"str1 == str2 ");

            break;

           default:

            break;

    }

7). 判读字符串是否相等:

NSString *str1 = @"abc";

NSString *str2 = @"abc";

str1 == str2       比较的是地址  (==比较的是字符串的地址)

[str1 isEqualToString:str3],比较的是内容,区分大小写(这个方法非常常用)

  NSString *str1 = @"abc";

    NSString *str2 = @"abc";

//地址的比较

        // "==" 不能够判断字符串是否相等的

        //判断字符串内容真正是否相等,使用是

        //isEqualToString:

        //注意:他是区分大小写的

        if ([str1 isEqualToString:str3]) {

            NSLog(@"相等");

        }else{

            NSLog(@"不相等");

        }

8). 检测字符串前后缀:

NSString *url = @"http://asdfasdfasdfaasdfadsfaf";

[url hasPrefix:@"http://"]; 字符串是否以http:开头//检测前缀

NSString *imgName = @"logo.jpg";

[imgName hasSuffix:@".jpg"]; 检测字符串是否以.jpg结尾//检测后缀

   NSString *url [email protected]"http://sjhasfjkfsjfhskfsbbbbb";
        if( [url hasPrefix:@"http"]){
            NSLog(@"是网址");
            if ([url hasSuffix:@".jpg"]) {
                NSLog(@"是图片");
            }else{
                NSLog(@"不是");
            }

        }

9).查找字符串:

格式:

NSRange range = [str1 rangeofString:str2]; //str1 中找str2

NSString *url [email protected]"http://sjhasfjkfsjfhskfsbbbbb";

//在一个字符串中查找另一个字符串出现的手位置

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

    //NSNotFound 是一个最大的long 无符号数

    //如果查找不到 range.location 是一个最大的long 无符号数

    //range.location 表示字符串首次出现的位置

    //range.length   表示子字符串的长度

    if (range.location != NSNotFound) {

        NSLog(@"位置:%lu,长度:%lu",range.location,range.length);

    }else{

      NSLog(@"没有查找到");

    }

-----------------字符串的截取和替换

1,从指定位置from开始(包含起始位置)到尾部

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

2,从字符串的开头一直截取到指定的位置to,不包含结束位置

- (NSString *)substringToIndex:(NSUInteger)to;

3,按照所给出的NSRange从字符串中截取子串

- (NSString *)substringWithRange:(NSRange)range;

NSString *str = @"http://www.baidu.com";

    //1) 从xx位置开始,到最后结束(包含xx这个位置的字符)

    NSString *str1 = [str substringFromIndex:5];

    NSLog(@"str1 = %@",str1);

    //2) 从开始位置,到xx位置结束(不包含xx这个位置)

    NSString *str2 = [str substringToIndex:5];

    NSLog(@"str2 = %@",str2);

     //3) 截取一个范围 range

    NSRange r1 = {3,4};

    NSString *str3 = [str substringWithRange:r1];

    NSLog(@"str3 = %@",str3);

4,字符串截取练习(获取itcast标签中的内容)

NSString *str = @"<itcast>乔布斯</itcast>";

        //  @">"  loc+1

        NSUInteger loc = [str rangeOfString:@">"].location + 1;  //"传"得位置

        //  @"</" loc

        NSUInteger len = [str rangeOfString:@"</"].location - loc;  //要截取的字符的长度

        // 构建 ruange

        NSRange r2 = NSMakeRange(loc, len);

        // 截取

        NSString *subStr = [str substringWithRange:r2];

NSLog(@"subStr = %@",subStr);

5,字符串替换

str stringByReplacingOccurrencesOfString:@"源字符串中的内容" withString:@"要替换成新的内容"

NSString *str [email protected]"asdfsdafasdfdasdfsa";

      //把a替换成 *

        NSString *newStr = [str stringByReplacingOccurrencesOfString:@"a" withString:@"*"];

        NSLog(@"newStr = %@",newStr);

1、获取字符串的每个字符

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

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

 NSString *str = @"ios.itcast.cn";

    //1、获取字符串的长度
    //调用字符串的length方法
    //str.length  ---->  [str length];
    NSLog(@"%ld",str.length);

    //2、获取字符的每一个字符
    unsigned long len = str.length;

    for (int i=0; i<len; i++) {
        unichar c = [str characterAtIndex:i];
        printf("%c  ",c);
    }

三,字符串和其他数据类型转换

1,和基本数据类型的转换

- (double)doubleValue;

- (float)floatValue;

- (int)intValue;

- (BOOL)boolValue;

 NSString *s1 = @"12";    //12+2
    //        s1+2;
    NSString *s2 = @"2.3";
    NSString *s3 = @"345.678";

    //把字符串转换为 int类型
    int n1 = [s1 intValue];
    NSLog(@"n1 = %d",n1*34);

    //字符串转换为float
    float f1 = [s2 floatValue];
    NSLog(@"f1 = %f",f1+3);

    //把字符串转换为double类型
    double d1 = [s3 doubleValue];
    NSLog(@"d1 = %f",d1+3);

2,C字符串转OC 字符串

  char *s = "zhangsanfeng";

        NSString *str = [NSString stringWithUTF8String:s];

3,OC字符串转C字符串

NSString *str2 = @"zbz";

        const char *s1 = [str2 UTF8String];

4,去除字符串首尾的空格

   NSString *str = @" itc ast ";

        NSCharacterSet *set =[NSCharacterSet whitespaceCharacterSet];

        NSString *newStr = [str stringByTrimmingCharactersInSet:set];

四,通过NSURL读写字符串

1,URL介绍

URL的全称是Uniform Resource Locator(统一资源定位符).

URL是互联网上标准资源的地址.

2,URL格式

基本URL包含:协议、主机域名(服务器名称\IP地址)、路径

举例: http://ios.itcast.cn/ios/images/content_25.jpg

可以简单认为: URL == 协议头://主机域名/路径

3,通过URL读写字符串

构建URL

NSURL *url = [NSURL URLWithString:@"file:///Users/apple/Desktop/str.txt"];//需要手动加file://协议头

通过文件路径创建(默认就是file协议的)

NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/str.txt"];//自动会将file://协议头加上

NSString *str = @"$10000000";

1),写入字符串

            [str writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:nil]

2),读取字符串

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

五,NSMutableString的介绍和使用

1, NSMutableString类继承NSString类

2,NSMutableString和NSString的区别:

NSString是不可变的, 里面的文字内容是不能进行修改的;

NSMutableString是可变的, 里面的文字内容可以随时更改;

NSMutableString能使用NSString的所有方法.(继承)

3, 可变和不可变的概念:

不可变: 指的是字符串在内存中占用的存储空间固定,并且存储的内容不能发生变化;

可变:   指的是字符串在内存中占用的存储空间可以不固定,并且存储的内容可以被修改;

4,使用:

NSMutableString *str2 = [NSMutableString stringWithFormat:@"Jack"];

1),添加:

                [str2 appendString:@"&Rose"];//追加

                [str appendFormat:@"http://www.baidu.com/%d",100];//格式化的添加字符串

2),在指定的位置插入一个字符串:

 [str insertString:@"p://" atIndex:3];

3),删除一部分字符串:

                 [str deleteCharactersInRange:NSMakeRange(3, 4)];

4),替换字符串的一部分内容

[str replaceCharactersInRange:NSMakeRange(11, 5) withString:@"itcast"];

使用注意:

1),不能将不可变的字符串赋值给可变的字符串;

NSMutableString *str = [NSString stringWithFormat:@"abc"];

时间: 2024-10-06 21:04:06

黑马程序员--Obbjective-C-Foundation框架中的NSString与NSMutableString的用法-我之整理的相关文章

Foundation框架中的NSString和NSMutableString的用法

一.NSString对象 在OC中,NSString对象是非常重要的一个对象,也是最基础的一个对象,是用来处理字符串的常用类. 1.创建的方法 //1.--------------字符串的创建方式 NSString *string1 = @"wehrwuer"; NSLog(@"%@",string1); //alloc创建字符串 string1 = [[NSString alloc] initWithString:@"ajfjrioewi"];

黑马程序员——Java基础---集合框架工具类

黑马程序员——Java基础<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------ 一.概述 Java为操作Set.List和Map提供了一系列工具类,主要有Collections和Arrays.这两个工具类的特点:类中的方法都是静态的,不需要创建对象,直接使用类名调用即可.Collections:是集合对象

OC学习篇之---Foundation框架中的NSString对象和NSMutableString对象

在之前的一篇文章中我们说到了Foundation框架中的NSObject对象: http://blog.csdn.net/jiangwei0910410003/article/details/41788121 那么今天在在来继续看一下Foundation框架中的常用对象:NSString和NSMutableString 在OC中NSString对象是不可变的,和Java中的String一样的,而NSMutableString是可变的,和Java中的StringBuilder一样. 一.NSStr

(转载)OC学习篇之---Foundation框架中的NSString对象和NSMutableString对象

在之前的一篇文章中我们说到了Foundation框架中的NSObject对象,那么今天在在来继续看一下Foundation框架中的常用对象:NSString和NSMutableString. 在OC中NSString对象是不可变的,和Java中的String一样的,而NSMutableString是可变的,和Java中的StringBuilder一样. 一.NSString对象 在OC中,NSString对象是非常重要的一个对象,也是最基础的一个对象,是用来处理字符串的常用类,和Java中的St

黑马程序员-Java基础-集合框架-TreeSet、二叉树、泛型

第一讲 TreeSet 1.  概述 TreeSet可以对Set集合中的元素进行排序,按照自然顺序排. 2.  演示代码 输出结果: 总结:TreeSet会对元素进行自然排序,大写排在小写前面. 第二讲  TreeSet存储自定义对象 1. 概述: 将自定义对象存储到TreeSet集合中. 2. 思路: 自定义学生类,并将学生对象存储到TreeSet中,在存储过程中按照年龄排序. 3. 练习:往TreeSet集合中存储自定义对象(学生),并按照学生年龄进行排序 小结: 自定义对象需要重写Comp

黑马程序员——java基础---集合框架

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.集合框架 概念:集合框架是Java中为了方便对集合进行存储.操作而形成的体系.集合是针对对象最常见的一种存储形式. 数组和集合类同是容器,区别在哪里?     相同点:               集合和数组都是容器,都可一存储对象(对象引用).     不同点:               数组长度固定,集合长度可变.               数组可以存储基本数据类型,集合却只能存储

黑马程序员---java基础---集合框架工具类:Collections和Arrays

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------        Collections 一.概述 Collections是对集合框架的一个工具类.它里边的方法都是静态的,不需要创建对象.并未封装特有数据. 在Collections工具类中大部分方法是用于对List集合进行操作的,如比较,二

黑马程序员--Obbjective-C-Foundation框架中的NSArray与NSMutableArray的用法-我之整理

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- ------------NSArray的创建方式 1),类方法创建 + (instancetype)array; + (instancetype)arrayWithObject:(id)anObject; + (instancetype)

黑马程序员_java的集合框架

java类集的整个体系的组成和关系,以及各个接口,类的文字说明: 集合框架的特征:高性能,对动态数组,链接表,树和散列表的实现是高性能,允许不同类型的类集以相同的方式工作.它不受对象数组长度的限制 Collection:   -|:List  里面的内容是有序的(存入和取出的顺序一致),允许重复的内容,有索引,它扩充了Collection接口,拥有更多的方法      |:LinkedList  内部是链表数据结构,增删的速度快,也是不同步的   -|:Set  不能存放重复的内容,是无序的,