字符串:NSString(不可变字符串) 和 NSMutableString(可变字符串)

本文详细介绍了Objective-C中NSString类的常用方法,包括创建、获取长度、获取子字符串、拼接、替换、字符串相等、比较、大小写转换、数与字符串互转、分割数组等功能,并通过实例展示了如何在实际场景中应用这些方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. NSString(不可变字符串)

1.1 创建字符串对象, 只使用初始化方法和便利构造器

初始化方法

NSString *name = [[NSString alloc] initWithString:@"1234567890"];

便利构造器

NSString *name2 = [NSString stringWithString:@"1234567890"];

常见字符串创建

NSString *name3 = @"1234567890";

1.2 获取字符串长度

NSLog(@"length = %lu", [name3 length]);
NSLog(@"length = %lu", name3.length);

打印结果:

length = 10

length = 10

1.3 获取子字符串

NSString *str1 = [name3 substringFromIndex:3];
NSLog(@"str1 = %@", str1);

从下标为3的字符开始(包含)

打印结果:

str1 = 4567890

NSString *str2 = [name3 substringToIndex:3];
NSLog(@"str2 = %@", str2);

到下标为3的字符(不包含)

打印结果:

str2 = 123

NSRange range = NSMakeRange(3, 2);
NSString *str3 = [name3 substringWithRange:range];
NSLog(@"str3 = %@", str3);

范围(从到下标为3的字符(包含)开始获取2个字符)

打印结果:

str3 = 45

1.4 拼接字符串

NSString *pro = @"辽宁省";
NSString *city = @"大连市";
NSString *local = [pro stringByAppendingString:city];
NSLog(@"local = %@", local);
NSString *area = @"沙河口区";
NSString *local1 = [local stringByAppendingString:area];
NSLog(@"local1 = %@", local1);
// 3个字符串连拼
NSString *local2 = [[pro stringByAppendingString:city] stringByAppendingString:area];
NSLog(@"local2 = %@", local2);

打印结果:

local = 辽宁省大连市

local1 = 辽宁省大连市沙河口区

local2 = 辽宁省大连市沙河口区

1.5 替换字符串

NSString *word = @"helle";
NSString *newWord = [word stringByReplacingOccurrencesOfString:@"e" withString:@"o"];
NSLog(@"newWord = %@", newWord);

所有的 e 都被 o 替换

打印结果:

newWord = hollo

NSRange range1 = NSMakeRange(4, 1);
NSString *newWord1 = [word stringByReplacingCharactersInRange:range1 withString:@"o"];
NSLog(@"newWord1 = %@", newWord1);
// 连写
NSString *newWord2 = [word stringByReplacingCharactersInRange:NSMakeRange(4, 1) withString:@"o"];
NSLog(@"newWord2 = %@", newWord2);

限定范围的字符串替换

打印结果:

newWord1 = hello

newWord2 = hello

1.6 字符串相等

NSString *userName = @"Leo";
if ([userName isEqualToString:@"Leo"]) {
   NSLog(@"登陆");
} else {
   NSLog(@"用户不存在");
}

返回BOOL值,是真返回YES(1),是假返回NO(0)

打印结果:

登陆

1.7 字符串比较

NSString *str5 = @"abc";
NSString *str6 = @"abd";
NSLog(@"compare: %ld", [str5 compare:str6]);

返回结果:NSOrderedAscending= -1, NSOrderedSame = 0, NSOrderedDescending = 1

打印结果:

compare: -1

1.8 判断字符串是什么开头或者结尾

NSString *pic1 = @"1.png";
if ([pic1 hasSuffix:@"png"]) {
            
    pic1 = [pic1 stringByReplacingOccurrencesOfString:@"png" withString:@"jpg"];
} else {
            
    pic1 = [pic1 stringByAppendingString:@".jpg"];
}
        NSLog(@"%@", pic1);

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

开头 - (BOOL)hasPrefix:(NSString *)aString;

结尾 - (BOOL)hasSuffix:(NSString*)aString;

打印结果:

pic1 = 1.jpg

1.9 大小写字符串转换

NSString *str7 = @"I am a student";
NSString *str8 = [str7 uppercaseString];
NSLog(@"str8 = %@", str8);

字符串全部改为大写字母

打印结果:

str8 = I AM A STUDENT

NSString *str9 = [str7 lowercaseString];
NSLog(@"str9 = %@", str9);

字符串全部改为大写字母

打印结果:

str9 = i am a student

NSString *str10 = [str7 capitalizedString];
NSLog(@"str10 = %@", str10);

字符串每个首字母是大写

打印结果:

str10 = I Am A Student

1.10 数值和字符串相互转换

NSString *str11 = @"3.1415926";
double pi = [str11 doubleValue];
NSLog(@"pi = %.7f", pi);

字符串转数值

打印结果:

pi = 3.1415926

int a = 12345;
NS_FORMAT_FUNCTION(1,2);
NSString *str12 = [NSString stringWithFormat:@"%d", a];
NSLog(@"str12 = %@", str12);

数值转字符串

打印结果:

str12 = 12345

NSString *str13 = [NSString stringWithFormat:@"%d", a];
NSLog(@"str13 = %@", str13);
NSString *str14 = [NSString stringWithFormat:@"生成新的字符串: %@", str1];
NSLog(@"str14 = %@", str14);

Format 格式化

打印结果

str13 = 12345

str14 = 生成新的字符串: 4567890

1.11 将字符串分割为数组

<pre name="code" class="objc">NSString *s = @"abc|hello|ok";
NSArray *my = [s componentsSeparatedByString:@"|"];

打印结果:

(

    abc,

    hello,

    ok,

)

2. NSMutableString(可变字符串)

2.1 创建可见字符串

NSMutableString *mStr = [NSMutableString stringWithString:@"可变字符串"];

2.2 拼接字符串

[mStr appendString:@"可变长"];
NSLog(@"mStr = %@", mStr);
打印结果:

mStr = 可变字符串可变长

2.3 插入字符串

[mStr insertString:@"任意" atIndex:6];
NSLog(@"mStr = %@", mStr);
打印结果:

mStr = 可变字符串可任意变长

2.4 删除字符串

NSRange range5 = NSMakeRange(6, 2);
[mStr deleteCharactersInRange:range5];
NSLog(@"mStr = %@", mStr);
打印结果:

mStr =可变字符串可变长


练习:

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

NSString *pic = @"1.png";
NSString *subPic = [pic substringFromIndex:2];
if ([subPic isEqualToString:@"png"]) {
            
   pic = [pic stringByReplacingOccurrencesOfString:@"png" withString:@"jpg"];
} else {
            
   pic = [pic stringByAppendingString:@".jpg"];
}
NSLog(@"%@", pic);
打印结果:

pic = 1.jpg

2. 用NSMutableString完成下述功能:给定一个图片文件名, 判断字符串中是否以 "png"结尾, 如果是就替换成"jpg", 如果不是, 就拼接".jpg"

NSMutableString *mPic = [NSMutableString stringWithString:@"2.png"];
if ([mPic hasSuffix:@"png"]) {
   [mPic deleteCharactersInRange:NSMakeRange(2, 3)];
   [mPic appendString:@"jpg"];
   NSLog(@"mPic = %@", mPic);
} else {
  [mPic appendString:@".jpg"];
   NSLog(@"mPic = %@", mPic);
}
打印结果:

mPic = 2.jpg

内容概要:本文详细介绍了扫描单分子定位显微镜(scanSMLM)技术及其在三维超分辨体积成像中的应用。scanSMLM通过电调透镜(ETL)实现快速轴向扫描,结合4f检测系统将不同焦平面的荧光信号聚焦到固定成像面,从而实现快速、大视场的三维超分辨成像。文章不仅涵盖了系统硬件的设计与实现,还提供了详细的软件代码实现,包括ETL控制、3D样本模拟、体积扫描、单分子定位、3D重建分子聚类分析等功能。此外,文章还比较了循环扫描与常规扫描模式,展示了前者在光漂白效应上的优势,并通过荧光珠校准、肌动蛋白丝、线粒体网络流感A病毒血凝素(HA)蛋白聚类的三维成像实验,验证了系统的性能应用潜力。最后,文章深入探讨了HA蛋白聚类与病毒感染的关系,模拟了24小时内HA聚类的动态变化,提供了从分子到细胞尺度的多尺度分析能力。 适合人群:具备生物学、物理学或工程学背景,对超分辨显微成像技术感兴趣的科研人员,尤其是从事细胞生物学、病毒学或光学成像研究的科学家技术人员。 使用场景及目标:①理解掌握scanSMLM技术的工作原理及其在三维超分辨成像中的应用;②学习如何通过Python代码实现完整的scanSMLM系统,包括硬件控制、图像采集、3D重建数据分析;③应用于单分子水平研究细胞内结构动态过程,如病毒入侵机制、蛋白质聚类等。 其他说明:本文提供的代码不仅实现了scanSMLM系统的完整工作流程,还涵盖了多种超分辨成像技术的模拟比较,如STED、GSDIM等。此外,文章还强调了系统在硬件改动小、成像速度快等方面的优势,为研究人员提供了从理论到实践的全面指导。
内容概要:本文详细介绍了基于Seggiani提出的渣层计算模型,针对Prenflo气流床气化炉中炉渣的积累流动进行了模拟。模型不仅集成了三维代码以提供气化炉内部的温度浓度分布,还探讨了操作条件变化对炉渣行为的影响。文章通过Python代码实现了模型的核心功能,包括炉渣粘度模型、流动速率计算、厚度更新、与三维模型的集成以及可视化展示。此外,还扩展了模型以考虑炉渣组成对特性的影响,并引入了Bingham流体模型,更精确地描述了含未溶解颗粒的熔渣流动。最后,通过实例展示了氧气-蒸汽流量增加2%时的动态响应,分析了温度、流动特性渣层分布的变化。 适合人群:从事煤气化技术研究的专业人士、化工过程模拟工程师、以及对工业气化炉操作优化感兴趣的科研人员。 使用场景及目标:①评估不同操作条件下气化炉内炉渣的行为变化;②预测并优化气化炉的操作参数(如温度、氧煤比等),以防止炉渣堵塞;③为工业气化炉的设计操作提供理论支持技术指导。 其他说明:该模型的实现基于理论公式经验数据,为确保模型准确性,实际应用中需要根据具体气化炉的数据进行参数校准。模型还考虑了多个物理场的耦合,包括质量、动量能量守恒方程,能够模拟不同操作条件下的渣层演变。此外,提供了稳态求解器动态模拟工具,可用于扰动测试工业应用案例分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值