【NSString字符串与NSArray数组 Objective-C语言】

本文介绍了如何在Objective-C中使用NSArray的componentsJoinedByString方法将数组元素拼接为字符串,以及使用NSString的componentsSeparatedByString方法将字符串按特定分隔符拆分为数组。示例代码展示了如何实现这两个操作。

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

一、把NSArray数组中的字符串元素,连成一个新的字符串

1.例如,我这儿有一个NSArray数组,里面有三个元素,

NSArray *arr = @[@“jack”,@“rose”,@“Jim”];

我要把这个数组里面的三个元素,把它连成1个新的字符串

你自己能不能连,能,是不是用NSMutableString的append方法,往里面追加,就可以了吧,例如,在main.m文件中:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {

NSArray *arr = @[@“jack”,@“rose”,@“jim”];

NSMutableString *str = [NSMutableString string];

[arr enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {

[str appendString:obj];

}];

NSLog(@“%@”,str);

return 0;

}

输出:jackrosejim

但其实你不用自己用appendString方法一个一个追加,因为这个方法呢,NSArray已经帮你写好了

方法的名字叫componentsJoinedByString:(Nonnull NSString *)

是不是需要传1个字符串进去啊

好,我给个井号吧,@“#”

[arr componentsJoinedByString:@“#”]

返回一个字符串

NSString *str = [arr componentsJoinedByString:@“#”];

输出:jack#rose#Jim

如果不想要连接符,空的不就行了吗,@“”

NSString *str = [arr componentsJoinedByString:@“”];

输出:jackrosejim

2.我这儿有个字符串,NSString *str = @“太平洋,西海岸,上海,浦东区”

这个字符串里,是不是有很多逗号啊

我想使用逗号,把这个字符串分隔一下

我用逗号分隔,就把这个字符串分成几部分了,4部分

分成4部分,应该是什么,是不是可以是个数组啊

这个方法是NSString的一个对象方法,如下:

[str componentsSeparatedByString:@“,”];

这个方法的签名如下:

- (NSArray<NSString *> *)componentsSeparatedByString:(NSString *)separator;

这个<NSString *>是个泛型,是Xcode 7.0里面新增的,代表这个NSArray数组里面的元素是什么类型的,是NSString类型的

这个返回一个NSArray数组,我拿NSArray数组类型的变量接一下

NSArray *arr = [str componentsSeparatedByString:@“,”];

这个数组里面是什么东西呢,就是这个字符串用逗号分隔的4部分

你若不信,试一下给你看啊

[arr enumerateObjectsUsingBlock:^(id obj,NSUInteger idx,BOOL *stop){

NSLog(@“%@”,obj);

}];

输出:太平洋

西海岸

上海

浦东区

或者,用for in循环

for(NSString *str in arr){

NSLog(@“%@”,str);

}

输出跟上面一样

所以,这个方法啊,将字符串以指定的分隔符分成1个数组,每1部分就是数组的一个元素

这个返回值(NSArray<NSString *> *),你可以认为它就是一个NSArray数组就可以了

这个什么意思,这个加了个尖括号,这个不是协议,这个的意思是,数组里面元素的类型是NSString类型的

好了,我们数组的两个方法就搞定了,第一个是将一个数组的元素连串起来,第二个是将一个字符串分隔开来

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风清晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值