OC-字符串

OC中的字符串和C语言不通,在C语言中,string是由char字符数组组成,而CO又单独的字符串NSString,他是由unichar字符串组成。unichar字符串是复合Unicode标准的多字节字符,这样就可以处理包含数百万字符的字符集。而NSString类已经做了很多工作,使得开发者不必担心字符串的内部表示。
字符串对象分为可变字符串和不可变字符串,在使用一个字符串对象之前,首先是创建以及初始化该对象。


不可变字符串NSString

//初始化一个字符串对象
NSString *string1 = @"博人";
NSString *string2 = [NSString stringWithFormat:@"jimuta"];
NSString *string3 = [NSString stringWithFormat:@"%@,%@",@"jimuta",@"Son"];
// 使用NSString的类方法来创建字符串
NSString *string4 = [[NSString alloc] initWithFormat:@"%@,%ld,%lf,hello!",@"Moon",5,5.5];
//[NSString alloc] initWithFormat 可以用来作为字符串的拼接
//从本地文件读取字符串
NSError *error;
NSString *string8 = [NSString stringWithContentsOfFile:@"" encoding:4 error:&error];
NSLog(@"string8 = %@ , error = %@",string8 , error);

//从网络读取字符串
NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
NSString *string9 = [NSString stringWithContentsOfURL:url encoding:4 error:&error ];
//对字符串的操作
NSString *string10 = @"你是逗比吗,我都受不了你了";
NSUInteger length = [string10 length];//求字符串的长度

//字符串的截取
//截取从头部开始到下标结束的字符串,不包含下标
NSString *substring1 = [string10 substringToIndex:5];

//截取从指定的下标开始直到结束的字符串,包含下标
NSString *substring2 = [string10 substringFromIndex:6];

//截取指定两个下标之间的字符串
 NSString *substring3 = [string10 substringWithRange:NSMakeRange(2, 2)];
NSString *string11 = @"abcdefg";
//根据字符串中的位置index来获得一个字符
char c = [string11 characterAtIndex:0];
//输出结果c = a
//字符串的比较,判断两个字符串是否相等
/*
如何让两个字符串的指针和内容相同,这里涉及到一个浅拷贝和深拷贝的问题  

浅拷贝:对象和拷贝的内容公用一份实体,仅仅是引用的变量名称不一样
深拷贝:源对象和拷贝的对象相互独立,其中任何一个对象的改动都不会对另一个对象造成影响
*/
NSString *substring4 = [NSString stringWithString:substring2];

//if (substring2 == substring4) 表示内容和指针都相等的时候,才成立
if (substring2 == substring4) {
    NSLog(@"指针和内容相等");
}
else{
    NSLog(@"指针和内容不相等");
}

//在实际开发过程中,我们通常只需要比较两个字符串的内容是否相等
//这里我们用到 isEqualToString 用来判断两个字符串的内容是否相等
if ([substring2 isEqualToString:substring4]) {
    NSLog(@"内容相等");
}
else{
    NSLog(@"内容不相等");
}
//比较两个字符串的大小
NSString *cmpstring1 = @"hehehehe";
NSString *cmpstring2 = @"hahahaha";

NSComparisonResult result = [cmpstring1 compare:cmpstring2];

    switch (result) {
        case NSOrderedAscending:
            NSLog(@"cmpstring1 < cmpstring2 ,升序");
            break;

    case NSOrderedSame:
        NSLog(@"cmpstring1 = cmpstring2 ");
            break;

    case NSOrderedDescending:
        NSLog(@"cmpstring1 > cmpstring2 ,降序");
            break;

    default:
            break;
    }
//根据指定的字符串拿到对应的 range 值
NSRange range = [string10 rangeOfString:@"逗比"];
NSLog(@"%@",[NSValue valueWithRange:range]);//对range进行封装

//只输出第一个遇到该字符串的位置 及 该字符串的长度
NSRange range1 = [string10 rangeOfString:@"你"];
NSLog(@"%@",[NSValue valueWithRange:range1]);
//判断字符串中是否有xx前缀 或 xx后缀,分别使用 hasPrefix 和 hasSuffix
NSString *string12 = @"http://www.baidu.com";
if ([string12 hasPrefix:@"http://"]) {
    NSLog(@"含有此前缀");
}
else{
    NSLog(@"不含有此前缀");
}

NSString *string13 = @"xxx.jpg";
if ([string13 hasSuffix:@".jpg"]||[string13 hasSuffix:@".png"]) {
    NSLog(@"这是图片,包含此后缀");
}
else{
    NSLog(@"不包含此后缀");
}
//字符串的拼接
//在字符串前拼接内
NSString *string14 = @"www.baidu.com";
NSString *string15 = [@"http://"stringByAppendingString:string14];
NSLog(@"%@",string15);

//连接两个字符串,并且第二个字符串是按一定的格式传进来的
//使用一个指定的符号,将两个字符串连接起来
NSString *string16 = @"http://static.bigstockphoto.com";
NSString *string17 = @"images/homepage/2016_popular_photo_categories.jpg";
NSString *string18 = [string16 stringByAppendingFormat:@"/%@",string17];

//自动为两个字符串中间生成 / ,一般用于文件夹拼接
NSString *string19 = [string16 stringByAppendingPathComponent:string17];

//取出最后一个 / 后面的内容
NSString *imagepath = @"http://static.bigstockphoto.com/images/homepage/2016_popular_photo_categories.jpg";
imagepath = [imagepath lastPathComponent];
//字符串的其他常用方法
//字符串的转换函数
NSString *str = @"111addd33";
int a1 = [str intValue];

//字符串的大小写转换
NSString *str2 = @"aAabb";
NSString *str3 = [str2 uppercaseString];//将字符全部改成大写
NSString *str4 = [str3 lowercaseString];//将字符全部改成小写
NSString *str5 = [str2 capitalizedString];
//将首个字符改成大写,其他小写

//替换函数,将字符串bb替换成dd
NSString *str6 = [str2 stringByReplacingOccurrencesOfString:@"bb" withString:@"dd"];
//将指定下标(1,2)内容替换成"GGGG"
NSString *str7 = [str2 stringByReplacingCharactersInRange:NSMakeRange(1, 2) withString:@"GGGG"];

//以 separator 为分割符,将原字符串内容进行分割,分割得到的结果放到一个数组里面,作为返回值
NSString *str8 = @"aa-bb-cc-dd-ee";
NSArray *array = [str8 componentsSeparatedByString:@"-"];

可变字符串NSMutableString

//NSMutableString 继承于 NSString,所以 NSString 的方法它都可以使用,一些相同的初始化操作如下:
NSMutableString *mstring = [NSMutableString stringWithString:@"nihao"];

NSMutableString *mstring1 = [NSMutableString stringWithFormat:@"%@",mstring];

NSMutableString *mstring2 = [NSMutableString stringWithContentsOfFile:@"" encoding:4 error:nil];

NSMutableString *mstring3 = [NSMutableString stringWithContentsOfURL:[NSURL URLWithString:@""] encoding:4 error:nil];
//可变字符串独特的初始化方法,初始化一个空间为100的可变字符串
//Capacity只是一个初始值,系统会根据这个大小预分配一块内存,这样后面的操作会效率高一些,但是他的长度并不局限于这个大小,还是可以改变的
NSMutableString *mstring4 = [[NSMutableString alloc]initWithCapacity:100];
//可变字符串NSMutableString的一些操作

NSMutableString *targetString = [NSMutableString stringWithString:@"呵呵,我靠"];
//替代    将敏感字'靠'用星号'*'替换掉
NSRange range = [targetString rangeOfString:@"靠"];
[targetString replaceCharactersInRange:range withString:@"*"];

//增 指定位置去插入一个字符串
[targetString appendString:@"神经病"];
[targetString appendFormat:@"%@%@",@"哦",@"哦"];
[targetString insertString:@"走开" atIndex:3];


//删 删除指定下标字符长度的字符串
[targetString deleteCharactersInRange:NSMakeRange(3, 2)];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值