iOS——API及各种字符串的连接关系

本文深入探讨了Objective-C中字符串的基本数据类型、创建方法、操作技巧及注意事项,包括NSString类的使用、字符串拼接、格式化、转换、读取文件内容、编码问题等,并通过实例演示了如何在Objective-C中高效地进行字符串处理。

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

OC 的基本数据类型
NSInteger 在64位下相当于long, 在非64位相当于int
CGFloat 在64位下相当于double,在非64位相当于float

/*

*      Inherits from  继承自哪几个类
*      conform to  遵循哪个协议
*      framework  这个类定义在哪个框架下
*      Availability  从iOS哪个版本开始支持使用这个类
*      Decleard in  声明在哪个头文件中
*      Sample code  示例代码
*      Guides 相关指南

 */
 NSString  是一个字符串类,而且是一个不可变的字符串,继承自NSObject,用NSString创建出来的字符串对象一经创建就不能修改

OC中如何创建字符串
NSString *str = @“lanou”;

// 创建空字符串
NSString *str1 = [[NSString alloc]init];
NSLog(@"内容:%@ 地址: %p",str1,str1);   // 打印的内容为空
str1 = @"nihao";
                           // 这种改变只是指针的重指向
NSLog(@"内容:%@ 地址: %p",str1,str1);

 NSString *str2 = [NSString string];
 NSLog(@"===%@",str2);
   // 创建不可变空字符串是没有任何意义的

// ************************************************************************ //

// 利用 initWithFormat 将多个不可变字符串拼接为一个字符串
NSString *str3 = [[NSString alloc]initWithFormat:@“%@ %@“,@“lanou”,@“i love you”];
NSLog(@“%@“,str3); //结果是:lanou i love you
NSString *str4 = [[NSString alloc]initWithFormat:@“我%@“,@“爱蓝欧”];
NSLog(@“%@“,str4); // 结果是:我爱蓝欧

// 练习:将电影上映日期2015-8-26 ~ 2015-9-26以字符串的形式创建出来
// 方式一
NSString * date = [[NSString alloc]initWithFormat:@”电影在%@ ~ %@期间上映”,@”2015.8.26”,@”2015.9.26”];
NSLog(@”%@”,date);
// 方式二
NSLog(@”电影在%@ ~ %@期间上映”,@”2015.8.26”,@”2015.9.26”);

// ************************************************************************ //
// 将C语言的字符串转换为OC的字符串:比如:”iOS” –> @”iOS”

NSString *str9 = [[NSString alloc] initWithUTF8String:"iOS"];
NSLog(@"%@",str9);

// ************************************************************************ //
// 将文件中的字符串内容读入到字符串对象中
// 第一个参数:文件的路径 // 下文中的是建立在桌面的TXT文本
// 第二个参数:编码的格式
// 第三个参数:如果出错,返回值存放的地方
// 分别是三个括号内的部分
NSString *str11 = [[NSStringalloc]initWithContentsOfFile:(@”/Users/laouhn/Desktop/Product/Homework/作业/LessonNSString-04-9-2/LessonNSString-04-9-2/xiang.txt”) encoding:(NSUTF8StringEncoding )error:(nil)];
NSLog(@”%@”,str11);
// ************************************************************************ //
// 操作字符串的方法

  1. //计算字符串长度的方法
    NSString *ss = @”lanou3g is good”;
    NSUInteger len = [ss length];
    NSLog(@”%lu”,len);

    2.// 返回字符串片段的方法
    NSString *str13 =@”abcdefg”;
    /*
    typedef struct _NSRange{ //NSRange 是OC中结构体,结构体有个成员变量:location length
    NSUInteger location; // 起始位置
    NSUInteger length; // 从起始位置多长
    }NSRange;
    */
    NSLog(@”%lu”,str13.length); // 0~6
    NSRange rang = {3,3};
    NSString *subString = [str13 substringWithRange:rang];
    NSLog(@”%@”,subString);
    // 返回子串在父串中的范围
    // 碰到第一对满足的停止
    rang = [str13 rangeOfString:@“def”];
    NSLog( @“location:%lu,length:%lu”,rang.location,rang.length);

    1. // 获取字符串的子串,以及字符串中的某个字符
      NSString *all = @“lane is good”;
      // 声明一个变量,范围变量
      // 1. 定义范围的起点
      // 2. 定义范围的长度
      NSRange range = NSMakeRange(2,2);
      // 声明一个变量用来指向获取的子串对象
      NSString *subString = [all substringWithRange:range];
      NSLog(@“subString: %@“,subString);

    2. // 获得从零位置都某个位置的字符串,不包含提供的位置字符(0~3)
      NSString *str14 = [str13 substringToIndex:4];
      NSLog(@“%@“,str14);

    3. //从某个位置开始获取字符串,直到父串的结尾,包含提供某个位置的字符
      NSString *str15 = [str13 substringFromIndex:4];
      NSLog(@“%@“,str15);

    4. // 返回格式拼接的字符串
      NSString *str16 = [str14 stringByAppendingFormat:@“%@“,str15];
      NSLog(@“%@“,str16);

// 练习3:把@“苍老师”后拼接上@“是你们的”
NSString *cangString = @”苍老师”;
NSString *newString = [cangString stringByAppendingFormat:@”%@%@”,@”是你们的.”,@”不,殷俊的”]; // 前面的cangString是命令发送的对象,不会发生变化
NSLog(@”%@”,newString);

NSString *str17 = [cangString stringByAppendingString:@”是世界的”];
// string后字符串不能有多个,注意 String 和 Format 的区别
NSLog(@”%@”,str17);

  1. // 字符串的替换
    // 将目标子串从父串中用我们给定的字符串替换掉
    NSString *str18 = [str17 stringByReplacingOccurrencesOfString:@“苍老师”,withString:@“波多”];
    NSLog(@“%@“,str18);

    1. // 判断一个字符串是否具有某个前缀或者后缀

NSString *str19 = @”中国北京中南海”;
BOOL isHas = [str19 hasPrefix:@”中国北京”];
NSLog(@”%@”,isHas ?@”有这个前缀”:@”没有这个前缀”);
isHas = [str19 hasSuffix:@”地区”];
NSLog(@”%@”,isHas ?@”有这个后缀”:@”没有这个后缀”);

//练习: 判断字符串@”陈冠希”是否有.jpg,如果没有给他拼接上.jpg,如果有.jpg,将.jpg替换为.png
NSString *str20 = @”陈冠希.jpg” ;

NSString *newCString = nil;  //定义一个空的字符串来接接收

BOOL picture = [str20 hasSuffix:@".jpg"];
if (0 == picture) {
    newCString = [str20 stringByAppendingString:@".jpg"];
}
else{
    newCString = [str20 stringByReplacingOccurrencesOfString:@".jpg" withString:@".png"];
}
NSLog(@"%@",newCString);
  1. // OC中判断两个字符串是否相等的办法

NSString *s = @“你好蓝鸥”;
NSString *s1 = @“蓝鸥你好”;
BOOL isEqual = [s isEqualToString:s1];
NSLog(@“%@“,isEqual ? @“相等” : @“不相等”);

10 . // 比较两个字符串的大小

NSString *sStr2 = @“NBA”;
NSString *sStr3 = @“NBA”;
/*
typedef NS_ENUM(NSInteger, NSComparisonResult) {NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending};
NSOrderedAscending 升序,前一个字符串小于后一个字符串
NSOrderedSame 相等
NSOrderedDescending 降序,前一个字符串大于后一个字符串
*/
NSInteger n = [sStr2 compare:sStr3];
switch(n) {
case NSOrderedAscending:
NSLog (@“%@ < %@“,sStr2,sStr3);
break;
case NSOrderdSame:
NSLog(@“%@ == %@“,sStr2,sStr3);
break;
case NSOrderedDescending:
NSLog(@“%@ > %@“,sStr2,sStr3);
break;
default:
break;
}

       // 不区分大小写的比较方式

n = [sStr2 caseInsensitiveCompare:sStr3];
NSLog(@“%@“,n);

// ************************************************************************ //
// NSMutableString 是可变字符串,继承自NSString,所以,NSString所有的办法NSMutableString 都可以调用

//这种创建字符串的形式可以提高一定的效率,如果放入的字符串长度小于开辟的虚拟空间长度,则直接放入,免去了开辟空间的时间,如果字符串长度大于开辟的空间,则此时需要再开辟空间;

NSMutableString *mStr = [[NSMutableString alloc]initWithCapacity:10];
// 插入一个字符串
[mStr insertString:@“索宁” atIndex:10];
NSLog(@“%@“,mStr);

// 创建可变字符串的另一个形式
NSMutableString *mStr1 = [[NSMutableString alloc]initWithString:@“约会”];
NSLog(@“%@“,mStr)1;

// 快速创建可变字符串 必须在后边加上.mutableCopy
NSMutableString *mStr2 = @“我和僵尸有个约会”.mutableCopy;
NSLog(@“%@“,mStr2);

// 可变字符串拼接
// 格式化拼接
[mStr2 appendFormat:@“%@“,@“在日本广岛”];
NSLog(@“%@“,mStr2);
[mStr2 appendString:@“喝啤酒”];
NSLog(@“%@“,mStr2);

// 删除某段字符串
NSRange rang1 = {1 , 7};
[mStr2 deleteCharactersInRange:rang1];
NSLog(@“%@“,nStr2);

// 改可变字符串
[mStr2 replaceCharactersInRange:NSMakeRange(2,5) withString:@“人民广场”];
NSLog(@“%@“,mStr2);

NSMutableString *mStr3 = @“i am come form china”.mutableCopy;
[mStr3 capitalizedString];

// 每个单词的首字母大写
NSString *upFirstWord = [mStr3 capitallizedString];
NSLog(@“%@“,upFirstWord);

// 将所有字母大写

NSString *upAllWord = [mStr3 uppercaseString];
NSLog(@“%@“,upAllWord);

// 全部小写

NSMutableString *mStr4 = @“I AM COME FORM CHINA”.mutableCopy;
NSString *lowerAllWord = [mStr4 lowercaseString];
NSLog(@“%@“,lowerAllWord);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值