和C语言不同,在Objective-C语言中,有单独的字符串类NSString。C语言中,string是由 char(ASCLL码)字符组成
OC中,字符串是由unichar(Unicode)字符组成
NSString,不可变字符串,即:创建以后,内容和长度不能更改
NSMutableString,可变字符串,即:创建以后,内容还可以修改
在使用哟个字符串对象之前首先创建一个新的字符串,可以使用实例方法和便利构造器
NSString常用的方法
1、使用实例方法和便利构造器创建一个新的字符串
2、获取字符串长度
3、获取子字符串
4、拼接字符串
5、替换字符串
6、字符串相等
7、字符串比较
使用初始化方法创建
    NSString *str1 = [[NSString alloc] initWithString:@"name"];
    NSLog(@"%@",str1);
    NSString *str11 = @"name";
    NSLog(@"%@",str11);
使用实例方法创建
    NSString *str2 = [NSString stringWithString:@"name"];
    NSLog(@"%@",str2);
    NSString *str22 = @"name";
    NSLog(@"%@",str22);
 char *cStr= "hehe";
将c语言字符串转成OC的对象
    NSString *str3 = [[NSString alloc] initWithCString:cStr encoding:NSUTF8StringEncoding];
    NSLog(@"%@",str3);
    NSString *str4 = [NSString stringWithCString:cStr encoding:NSUTF8StringEncoding];
    NSLog(@"%@",str4);
根据指定格式创建字符串
    NSString *str5 = [[NSString alloc] initWithFormat:@"%@+%d",@"duke",1001];
    NSLog(@"%@",str5);
    NSString *str6 = [NSString stringWithFormat:@"%@+%d",@"duke",1001];
    NSLog(@"%@",str6);
根据指定路径的文件内容创建字符串对象
    NSString *str7 = [[NSString alloc] initWithContentsOfFile:@"/Users/lanouhn/Desktop/未命名.txt" encoding:NSUTF8StringEncoding error:nil];
    NSLog(@"%@",str7);
    NSString *str8 = [NSString stringWithContentsOfFile:@"/Users/lanouhn/Desktop/未命名.txt" encoding:NSUTF8StringEncoding error:nil];
    NSLog(@"%@",str8);
求字符串对象的长度
    NSInteger length = [str8 length];
    NSLog(@"%ld",length);
判断一个字符串是否拥有前缀字符串
    BOOL result1 = [str8 hasPrefix:@"李"];
    NSLog(@"%@",result1 ? @"YES" : @"NO");
判断一个字符串是否拥有后缀字符串
    BOOL result2 = [str8 hasSuffix:@"李"];
    NSLog(@"%@",result2 ? @"YES" : @"NO");
判断两个字符串是否相同
    BOOL result3 = [str8 isEqualToString:str7];
    NSLog(@"%@",result3 ? @"YES" : @"NO");
字符串比较排序结果
    NSComparisonResult result4 = [str8 compare:str7];
    NSLog(@"%ld",result4);//升序为-1,降序为1,相同为0
获取子字符串
从指定下标(包含指定下标)到字符串结束的子字符串
    NSString *subStr1 = [str8 substringFromIndex:2];
    NSLog(@"%@",subStr1);
从字符串开始到指定下标的字符(不包含指定下标)的子字符串
    NSString *subStr2 = [str8 substringToIndex:2];
    NSLog(@"%@",subStr2);
NSRange为结构体类型,成员location描述下标位置,成员length描述需要截取的子字符串长度
    NSRange range = NSMakeRange(1, 3);
//    NSRange range = {1,3};
    NSString *subStr3 = [str8 substringWithRange:range];
    NSLog(@"%@",subStr3);
字符串拼接
根据给定的参数字符串拼接产生新的字符串,不改变原有的字符串
    NSString *newString1 = [str8 stringByAppendingString:@"叉1001"];
    NSLog(@"%@",newString1);
根据指定的格式串以及参数去拼接产生新的字符串
    NSString *newString2 = [str8 stringByAppendingFormat:@"%d",1001];
    NSLog(@"%@",newString2);
路径拼接
    NSString *newString3 = [str8 stringByAppendingPathComponent:@"xx.avi"];
    NSLog(@"%@",newString3);
字符串的替换
通过给定的第二个字符串替换str8中当前存在的字符串
    NSString *newString4 = [str8 stringByReplacingOccurrencesOfString:@"李X" withString:@"无双"];
    NSLog(@"%@",newString4);
查找字符串
    NSString *link = @"abdjofepok = _nieifn";
    NSRange range1 = [link rangeOfString:@"pok = _nie"];
    NSLog(@"%@",NSStringFromRange(range1));
    if (range1.location != NSNotFound) {
        NSLog(@"founded");
    }
字符串与数值类数据的转换
    NSString *numString1 = @"1";
    NSInteger integerValue = [numString1 integerValue];
    NSLog(@"%ld",integerValue);
大小写转换
    NSString *string = @"i love you";
转成大写
    NSString *upperCaseStr = [string uppercaseString];
    NSLog(@"%@",upperCaseStr);
转成小写字符串
    NSString *lowCaseStr= [upperCaseStr lowercaseString];
    NSLog(@"%@",lowCaseStr);
转成首字母大写字符串
    NSString *capitalString = [string capitalizedString];
    NSLog(@"%@",capitalString);
 
NSMutableString(可变字符串)
NSMutableString是NSString的子类,通过NSMutableString创建的字符串是一个动态的可变的字符串,可以对字符串进行增删改等操作
常用方法包括:
创建一个新的字符串
拼接字符串
插入字符
删除字符
    NSMutableString *mutableStr1 = [[NSMutableString alloc] init];
    NSLog(@"%@",mutableStr1);
    NSMutableString *mutableStr2 = [NSMutableString string];
可变字符串的拼接
stringByAppendingString
    [mutableStr1 appendString:@"abcdeg"];
    NSLog(@"%@",mutableStr1);
    NSString *resultString = [mutableStr1 stringByAppendingString:@"xxxxx"];
    NSLog(@"%@",mutableStr1);
    NSLog(@"%@",resultString);
这种字符串拼接,不改变原来的对象
另一个字符串拼接方法
stringByAppendingFormat
    [mutableStr2 appendFormat:@"duke + %d",1001];
    NSLog(@"%@",mutableStr2);
 
删除字符串
    [mutableStr2 deleteCharactersInRange:NSMakeRange(4,6)];
    NSLog(@"%@",mutableStr2);
 
插入字符串
在给定的下标之前插入新的字符串
    [mutableStr2 insertString:@"heheh" atIndex:0];
    NSLog(@"%@",mutableStr2);
 
替换字符串
根据给定的字符串替换指定范围的字符门
    [mutableStr2 replaceCharactersInRange:NSMakeRange(0, 5) withString:@"hehe"];
    NSLog(@"%@",mutableStr2);
下面是一个实例分别通过不可变字符方法和可变方法去解答
 给定一个图片文件名,判断字符串中是否以“png”结尾,如果是就替换成“jpg”,如果 不是,就拼接”.jpg”。
 
 不可变字符串
    NSString *picName = [NSString stringWithFormat:@"image.png"];
    NSString *resultStr = nil;
    if ([picName hasSuffix:@"png"]) {
        resultStr = [picName stringByReplacingOccurrencesOfString:@"png" withString:@"jpg"];
    } else {
        resultStr = [picName stringByAppendingString:@".jpg"];
    }
    NSLog(@"%@",resultStr);

可变字符串
    NSMutableString *picture = [NSMutableString stringWithString:picName];
    if ([picture hasSuffix:@"png"]) {
        [picture replaceCharactersInRange:[picture rangeOfString:@"png"] withString:@"jpg"];
    } else {
        [picture appendString:@".jpg"];

    }
    NSLog(@"%@",picture); 
 
OC中存放数据的容器类都称为集合(collection)
数组是有序集合,只能存放对象
数组有下标(index)的概念,靠index来索引元素,下标从0开始
数组分不可变数组(NSArray)和可变数组(NSMutableArray)
常用的方法是:
创建数组对象,使用实例初始化或便利构造器
获取元素个数
根据index获取对象
 
    //定义NSArray
    NSArray *array1 = [[NSArray alloc] initWithObjects:@"1",@2,@"哈哈",nil];
    NSLog(@"%@",[array1 description]);
    NSArray *array2 = [NSArray arrayWithObjects:@"1",@2,@"☺",nil];
    NSLog(@"%@",array2);
//数组的语法糖形式 (literal,字面量)
    NSArray *array3 = @[@"1",@2,@"☺"];
    NSLog(@"%@",array3);
//获取数组元素个数
    NSInteger count = [array3 count];
    NSLog(@"%ld",count);
//通过下标获取对应的对象
    for (int i = 0; i < [array3 count]; i++) {
//        NSLog(@"%@",[array3 objectAtIndex:i]);
        NSLog(@"%@",array3[i]);
    }
//通过对象去查找他在数组中的下标
    NSInteger index = [array3 indexOfObject:@2];
    NSLog(@"%ld",index);
    NSLog(@"----------------------------------");
    NSString *textString = [NSString stringWithContentsOfFile:@"/Users/Duke/Desktop/未命名.txt" encoding:NSUTF8StringEncoding error:nil];
    NSLog(@"%@",textString);
//通过给定的字符串将原有字符串截取成多个子字符串并保存在数组中返回
    NSArray *array4 = [textString componentsSeparatedByString:@"\n"];
    NSLog(@"%@",array4);
//可变数组的使用--------------------------------------------------------
可变数组是NSArray的子类,继承NSArray的所有方法
可以对数组进行增删改等操作
常用的方法有:
创建数组对象
添加元素、插入元素
删除元素、替换元素
交换指定位置的两个元素
 
    NSMutableArray *mutablearray1 = [[NSMutableArray alloc] initWithArray:array1];
    NSLog(@"%@",mutablearray1);
    NSMutableArray *mutableArray2 = [NSMutableArray arrayWithArray:array1];
    NSLog(@"%@",mutableArray2);
//添加元素
    [mutableArray2 addObject:@33];
    NSLog(@"%@",mutableArray2);
//插入元素
    [mutableArray2 insertObject:@123 atIndex:2];
    NSLog(@"%@",mutableArray2);
//替换一个已有元素
    [mutableArray2 replaceObjectAtIndex:2 withObject:@"heihei"];
    NSLog(@"%@",mutableArray2);
//交换两个对应下标的对象的位置
    [mutableArray2 exchangeObjectAtIndex:2 withObjectAtIndex:0];
    NSLog(@"%@",mutableArray2);
//删除最后一个对象
    [mutableArray2 removeLastObject];
    NSLog(@"%@",mutableArray2);
//删除指定元素
    [mutableArray2 removeObject:@2];
    NSLog(@"%@",mutableArray2);
//删除指定下标的对象
    [mutableArray2 removeObjectAtIndex:0];
    NSLog(@"%@",mutableArray2);
//删除多个内容
//删除数组中的所有对象
    [mutableArray2 removeAllObjects];
    NSLog(@"%@",mutableArray2);
//遍历数组
    NSArray *array = [NSArray arrayWithObjects:@"one",@"two",@"three",@"four", nil];
    for (int index = 0; index < [array count]; index++) {
        NSString *string = [array objectAtIndex:index];
        NSLog(@"%@",string);
    }
    NSLog(@"-----------------------");
    for (NSString *string in array) {
        NSLog(@"%@",string);
    }
 
 
 
 

OC中的NSNumber、NSArray、NSString的常用方法的更多相关文章

  1. OC中数组类NSArray的详解,常用属性和方法(一)

    数组是一个有序的集合,OC中的数组只能存储对象类型, 但是对于对象的类型没有限制. 通过下标访问数组元素,下标从0开始. NSA

  2. OC中Foundation框架之NSString、NSMutableString

    创建方式 )直接赋值 NSString *str =@"abc"; )创建对象 NSString *str2 = [[NSString alloc]init]; str2 =@&q ...

  3. OC中数组类NSArray的详解,数组的遍历(二)

    数组类的便利 1.for循环(大家都会的...) 2.NSEmunerator 3.for in 首先重点说下 第二种NSEmunerator枚举器,系统声明是 @interface NSEnumer ...

  4. OC中NSDictionary(字典)、NSMutableDictionary(可变字典)、NSSet(集合)、NSMutableSet(可变集合)得常用方法

    字典用于保存具有映射关系数据的集合 一个key—value对认为是一个条目(entry),字典是存储key—value对的容器 与数组不同,字典靠key存取元素 key不能重复,value必须是对象 ...

  5. OC中的字符串常用方法

    OC中的字符串常用方法 OC中对字符串进行操作使用了Foundation框架中的NSString类(不可变).NSMutableString类(可变). NSString 1.创建字符串 [objc] ...

  6. OC中Foundation框架之NSArray、NSMutableArray

    NSArray概述 NSArray是OC中的数组类 NSArray特点 )只能存放任意OC对象,并且是有顺序的 )不能存放非OC对象,比如int/float/double/char/enum/stru ...

  7. OC中@property属性关键字的使用(assign/weak/strong/copy)

    OC中@property属性关键字的使用(assign/weak/strong/copy) 一.assign 用于 ‘基本数据类型’.‘枚举’.‘结构体’ 等非OC对象类型 eg:int.bool等 ...

  8. OC中文件的操作

    OC中文件操作,在之前的文章中,已经接触到了文件的创建了,但是那不是很具体和详细,这篇文章我们就来仔细看一下OC中是如何操作文件的: 第一.首先来看一下本身NSString类给我们提供了哪些可以操作文 ...

  9. OC中Foundation框架之NSDictionary、NSMutableDictionary

    NSDictionary概述 NSDictionary的作用类似:通过一个key ,就能找到对应的value 同样 NSDictionary是不可变的,一旦初始化完毕,里面的内容就无法修改 NSDic ...

随机推荐

  1. 操作笔记:linux下查看端口被占用

    [root@iZ945sgm0ugZ /]# lsof -i:8080 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 1192 jet ...

  2. 在Tomcat下部属项目三种方式:

    在Tomcat下部属项目三种方式:       1直接复制:       2. 通过配置虚拟路径的方式    直接修改配置文件 写到tomcat/conf/server.xml     找到<H ...

  3. Tomcat安装后启动一闪而过

    出现这种问题一般是环境变量没配置好.除了JDK环境变量还有Tomcat环境变量:CATALINA_HOME 和CATALINA_BASE 虽然JDK里面会含有JRE,但是最好是在环境变量里面也配置一个 ...

  4. 【Hibernate 9】悲观锁和乐观锁

    一.锁的基本简介 1.1,为什么需要锁 首先,锁的概念产生,主要是为了解决并发性的问题.什么是并发性问题呢,比如: Angel现在银行有个账号,里面有存款1000块.现在,Angel的账户,在两个地方 ...

  5. 跨域请求之JSONP 一

    跨域请求之JSONP 一 跨域请求的方式有很多种, iframe document.domain window.name script XDomainRequest (IE8+) XMLHTTPReq ...

  6. Spring框架搭建遇到的问题汇总

    1.The resource is not on the build path of a Java project 然后把相应的依赖加入构建路径 2.Type mismatch: cannot con ...

  7. 一个完整的菜谱客户端(android源码)(有独立后台)

    该源码是自己写的,是一个完整的菜谱类客户端.功能简单比较简单,界面比较丑,自己乱拼接的,只为学习用.功能相对完整,数据来自独立后台,通过http协议获取,全部来自真实数据.代码里面有获取数据的相应ur ...

  8. Linux命令行选项及参数

    1.main函数参数形式 int main(int argc , char *argv[] , char *env[]); //第一个参数argc代表命令行的参数个数 //第二个参数依次指向各个参数, ...

  9. C#反射动态调用dll中的方法

    //加载程序集(dll文件地址),使用Assembly类 Assembly assembly = Assembly.LoadFile(AppDomain.CurrentDomain.BaseDirec ...

  10. JavaScript 一些基础练习

    JavaScript为网页添加动态效果并实现与用户交互的功能.改变颜色以及宽高,隐藏或显示内容,取消设置 <style type="text/css"> body { ...