美文网首页
ios 将字符串用多个分隔符切割成数组

ios 将字符串用多个分隔符切割成数组

作者: 紫释沐沐 | 来源:发表于2019-05-17 16:24 被阅读0次

一般来说,为了方便传值,我们会约定好某个符号,将多段文本拼接成一个字符串,然后由前端自行拆分解析。然而,总有那么几种奇葩,给的数据穿插了各种符号,然后告诉你每个符号间都是一个段,自行理解。What?!这是认真的吗?
当然,有时候这就是认真的,所幸系统不仅提供了以一段连续字符切割字串的方法,同时也提供了以某些个零散的字符切割字串的方法。
举个例子,数据为:We,Are!Family 希望得到的数据是[We,Are,Family]

NSString *string = @"We,Are!Family";
NSMutableArray *tempArray = [NSMutableArray arrayWithArray:[string componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@",!"]]];//@",!"以,或!切割,而不是把,!连在一起当成一个整体进行切割
结果:
(
    We,
    Are,
    Family
)

然而这个方法存在一个小小的弊端,当切割符相连或者为字串的最后一位时,会出现数组中存在空字串为对象的情况,如下:

/**切割符在字串最后一位时*/
NSString *string = @"We,Are!Family.";
NSMutableArray *tempArray = [NSMutableArray arrayWithArray:[string componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@",!."]]];
结果:
(
    We,
    Are,
    Family,
    ""
)
/**切割符相连时*/
NSString *string = @"We,Are!+Family."; //这里!+相连,中间将出现一个空字串对象
NSMutableArray *tempArray = [NSMutableArray arrayWithArray:[string componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@",!+."]]];
结果:
(
    We,
    Are,
    "",
    Family,
    ""
)

这个时候就和我们所需要的数据有点出入了,有时候空字串会影响统一的处理,我们就必须将所有空字串的对象删除,其实也很简单,直接用系统自带的可变数组删除对象的方法即可:

[tempArray removeObject:@""];//将数组中为@""的对象全部删除

这个时候,就可以将这个流程封装成一个方法,方便调用:

/**建议放在NSString的拓展类里,写法如下*/
-(NSArray *) componentsSeparatedBySetCharacters:(NSString *)setSep
{
    NSMutableArray *tempArray = [NSMutableArray arrayWithArray:[self componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:setSep]]];
    [tempArray removeObject:@""];
    return [NSArray arrayWithArray:tempArray];
}

/**也可以封装在工具类里,可用类方法,写法如下*/
+(NSArray *) string:(NSString *)string componentsSeparatedBySetCharacters:(NSString *)setSep
{
    NSMutableArray *tempArray = [NSMutableArray arrayWithArray:[string componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:setSep]]];
    [tempArray removeObject:@""];
    return [NSArray arrayWithArray:tempArray];
}

相关文章

  • ios 将字符串用多个分隔符切割成数组

    一般来说,为了方便传值,我们会约定好某个符号,将多段文本拼接成一个字符串,然后由前端自行拆分解析。然而,总有那么几...

  • 字符串转数组

    含有分隔符 将string字符串转换为array数组 将array数组转换为string字符串 不含有分隔符 关于...

  • js useful

    记录有用的js技巧。 将字符串拆分为字符数组扩展操作符更简洁 在多个分隔符上分割字符串split是可以用正则作为参...

  • 将字符串切割成数组 componentsSeparatedByS

    将字符串切割成数组 // 注意:NSArray *b = [a componentsSeparatedByStri...

  • JS中数组与字符串的相互转换方法

    数组转字符串需要将数组元素用某个字符连接成字符串,示例代码如下: 字符串转数组实现方法为将字符串按某个字符切割成若...

  • js操作数组方法

    join():用指定的分隔符将数组每一项拼接为字符串push() :向数组的末尾添加新元素pop():删除数组的最...

  • String object常用方法

    字符串相关常用方法 1. split:用指定的分隔符字符串将一个String对象分割成字符串数组 2. index...

  • JavaScript数组join,reverse ,sort方法

    1.join();方法用于将数组内元素转成一个或多个字符串 返回值:字符串 参数:分隔符,默认是逗号 var nu...

  • 数组方法总结

    数组原型方法主要有以下这些join():用指定的分隔符将数组每一项拼接为字符串push() :向数组的末尾添加新元...

  • swift5.0 数组Array的常用方法总结

    · 数组与字符串的互转 数组转字符串 字符串转数组 没有分隔符的字符串分割 有分隔符的字符串分割 注释:在使用分隔...

网友评论

      本文标题:ios 将字符串用多个分隔符切割成数组

      本文链接:https://www.haomeiwen.com/subject/smroaqtx.html