OC基础--字符串

本文详细探讨了Objective-C与Swift作为iOS开发首选语言的优势与局限,对比了两者在语法、性能、社区支持等方面的差异,并提供了一些实际场景下的应用案例,旨在帮助开发者更高效地进行iOS应用开发。

字符串分为两种:

1.不可变字符串:NSString    会产生一个新的字符串,一般方法会返回NSString *

2.可变字符串:NSMutableString  都是对自身内容进行修改,在访问的时候字符串已经发生改变,一般没有返回值


************************不可变字符串*******************************

1.创建字符串对象方法:

(1)字面量

NSString *str = @"杨林dfssfsdg";

(2)通过自定义初始化方式创建(系统不推荐)

NSString *str = [[NSString alloc]init]; //创建空字符串

NSString *str = [[NSString alloc]initWithString:@"liushanshan"]; //赋初值字符串

NSLog(@"%@", str); //输出

(3)利用系统提供的便利构造器的方法

NSString *str =[NSString stringWithString:@"姗姗"];

2.NSString的使用方法

(1)substring 截取字符串3种

       substringFromIndex从第几位开始,到字符串结束(包括下标位置)

       substringToIndex 从第0位开始到当前位置(不包括下标位置)

       NSRange 有范围的截取: NSRange是一个结构体,提供了两个成员变量,一个是起始位置,一个是长度

       NSString *str = @"nihao,wodemingzijiaoliushanshan";

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

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


       NSRange range = {3, 7};

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

       NSLog(@"%@",[str substringWithRange:NSMakeRange(3, 7)]);


             


(2判断是否有前缀 hasPrefix

NSString *str = @"liushanshan";

NSString *prefix = @"li";

NSLog(@"%d", [str hasPrefix:prefix]);

  有为1,没有为0

(3)把字符串变为基本数据类型 Value

NSString *strNum = @"123sf45";

NSInteger num = [strNum integerValue];

NSLog(@"%ld", num);

结果为:123 注意:遇到字母后,从字母开始到结尾都不打印

(4)把基本数据类型转换成字符串

stringWithFormat: 该方法可以吧任意类型转换成字符串类型,还可以进行拼接

CGFloat g = 3.14;

NSInteger a  = 100;

NSString *str = [NSString stringWithFormat:@"%ld%g%@", a, g, @"lish"];

NSLog(@"%@", str);

                         

(5)小写字母变大写字母 uppercaseString

NSString *str = @"liushanshan";

NSLog(@"%@", str.uppercaseString)

(6)大写字母变小写字母 lowercaseString

NSString *str2 = @"li uT Tns han";

NSLog(@"%@", str2.lowercaseString);

(7)单词首字母大写 capitalizedString

注意:只有每一个单词首字母是大写,其余全是小写(以前单词中有大写的也变小写)

NSString *str2 = @"heLLo,woRd";

NSLog(@"%@", str2.capitalizedString);

结果:Hello,Word

(8)比较 compare

对应的结果只有三个,一个是ASC升序,结果为-1;一个是same,结果为0;一个是降序DESC,结果为1

NSString *str = @"nihao";

NSString *newStr = @"buhao";

NSLog(@"%ld", [str compare:newStr]);

                 结果:1

(9)字符串的拼接

NSString *str = @"liushanshan";

NSString *str1 = @"yanglin";

NSString *newStr = [str stringByAppendingString:str1];

NSLog(@"%@", newStr);

  结果为:liushanshanyanglin

(10)替换

第一个参数:字符串原有的内容

第二个参数:要替换的内容

NSString *str = @"刘珊珊没事玩玩游戏";

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

    NSLog(@"%@", newStr);

结果:杨姗姗没事玩玩游戏

(11)比较字符串内容是否相同  相同为1,不同为0

NSString *str1 = @"nihao";

NSString *str2= @"nihao";

NSLog(@"%d", [str1 isEqualToString:str2]);

结果:1

11.截取

NSString *endTime = @"sddfwefgwsdffdg";

NSString *newEnd = [endTime substringFromIndex:10];

NSLog(@"%@", newEnd);

结果:dffdg





****************************可变字符串*******************************

NSMutableString: NSString的子类,一般对自身进行操作

注意:字面量的方式创建的是不可变字符串,不可用该方法创建可变字符串,只可以拿不可变的指针来接受

1.创建可变字符串

(1)初始化方式

  NSMutableString *str =[[NSMutableString alloc]init]; //赋空值

  NSMutableString *str = [[NSMutableString alloc]initWithString:@"tengfei"];// 创建并赋值

  NSLog(@"%@", str);

(2)便利构造器方式

NSMutableString *str = [NSMutableString stringWithString:@"shangshuai"];

NSLog(@"%@", str);

2.可见字符串使用方法

(1)插入

NSMutableString *str = [NSMutableStringstringWithString:@"nihao,wodemingzi jiao yanglin"];

[str insertString:@"商帅" atIndex:3];

NSLog(@"%@", str);

                

(2)替换

NSMutableString *str = [NSMutableString stringWithString:@"nihao,wodemingzi jiao yanglin"];

[str replaceCharactersInRange:NSMakeRange(3, 1) withString:@"商帅" ];

NSLog(@"%@", str);

        

注意:第一个参数为替换位置,第二个为所替换的字符串所占的长度,如为1,则占用被替换字符串一个字符空间,如为0,则不占用,只需要在替换位置直接插入即可

(3)全部替换

NSMutableString *str = [NSMutableString stringWithString:@"nihao,wodemingzi jiao yanglin"];

[str setString:@"woshi"];

NSLog(@"%@", str);

结果:woshi

(4)拼接(同不可变的比较)

NSMutableString *str = [NSMutableString stringWithString:@"nihao,wodemingzi jiao yanglin"];

[str appendString:@"商帅"];

  NSLog(@"%@", str);

 


例题:

给定一个图片文件名,判断字符串是否以"png"结尾,如果是就替换成"jpg",不是就拼接".jpg"

 NSString *name = @"shangshuai.avi";

   if ([name hasSuffix:@"png"]) {

       name = [name stringByReplacingOccurrencesOfString:@".avi"withString:@".jpg"];

   }else{

       name = [name stringByAppendingString:@".jpg"];

   }

 NSLog(@"%@", name);


    

******************有关NSLog*****************

     NSString *str = @"杨林dfertfsdg";

    NSLog(@"%ld", str.length);  //字符串的长度    11

    NSLog(@"%c", [str characterAtIndex:3]);  //通过指定下标,获取字符内容   f

    NSLog(@"%C", [str characterAtIndex:1]);  //打印汉字用大的%C  林



考虑柔性负荷的综合能源系统低碳经济优化调度【考虑碳交易机制】(Matlab代码实现)内容概要:本文围绕“考虑柔性负荷的综合能源系统低碳经济优化调度”展开,重点研究在碳交易机制下如何实现综合能源系统的低碳化与经济性协同优化。通过构建包含风电、光伏、储能、柔性负荷等多种能源形式的系统模型,结合碳交易成本与能源调度成本,提出优化调度策略,以降低碳排放并提升系统运行经济性。文中采用Matlab进行仿真代码实现,验证了所提模型在平衡能源供需、平抑可再生能源波动、引导柔性负荷参与调度等方面的有效性,为低碳能源系统的设计与运行提供了技术支撑。; 适合人群:具备一定电力系统、能源系统背景,熟悉Matlab编程,从事能源优化、低碳调度、综合能源系统等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①研究碳交易机制对综合能源系统调度决策的影响;②实现柔性负荷在削峰填谷、促进可再生能源消纳中的作用;③掌握基于Matlab的能源系统建模与优化求解方法;④为实际综合能源项目提供低碳经济调度方案参考。; 阅读建议:建议读者结合Matlab代码深入理解模型构建与求解过程,重点关注目标函数设计、约束条件设置及碳交易成本的量化方式,可进一步扩展至多能互补、需求响应等场景进行二次开发与仿真验证。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值