【问题标题】:iPhone - Splitting an NSString into char NSStringsiPhone - 将 NSString 拆分为 char NSStrings
【发布时间】:2023-03-31 07:26:01
【问题描述】:

我有一个 {{"foo","food only"}, {"bar","babies are rad"} ... } 的 2d NSArray,我需要得到 2 个 NSArray:一个字符和相应的单词之一。所以@"f"、@"o"、@"b"、@"a"、@"r" 和 @"food"、@"only"、@"babies"、@"are"、@"rad"将是我的两个 NSArray 的 NSStrings。

首先,我如何从@"foo" 得到@"f",@"o",@"o"

其次,我怎样才能只保留唯一性?我猜是 NSDictionary 并且只有在 key 不存在时才添加 @"f":@"food" @"o":@"only" 然后使用 getObjects:andKeys: 获取两个我将转换为的 C 数组NSArrays..

根据以下答案,我选择了以下内容。我实际上并没有使用 NSMutableDict,我只是在创建我的 2 个输出数组之前将我的字母添加到它以获取唯一性检查:

        unichar ch = [[arr objectAtIndex:0] characterAtIndex:i];
        NSString *s = [NSString stringWithCharacters: &ch length: 1];

        if (![dict objectForKey:s]) {
        }

【问题讨论】:

    标签: objective-c nsstring nsdictionary


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      如果您想要字符串的单个字符,请尝试-characterAtIndex:。这将使您将它们作为unichar 原始类型,然后您可以将其包装在NSString 中,如下所示:

      unichar ch = ...;
      NSString *chString = [NSString stringWithCharacters: &ch length: 1];
      

      为了保持唯一性,您可以将对象存储在 NSMutableSet 中,但它不会保留对象添加到其中的顺序。

      【讨论】:

      • 将两个 NSArrays {@"f", @"foo"} 和 {@"f",@"foo"} 添加到一个可变集最终都添加了,或者它们测试为相等并且只会添加一个?
      • 集合{ f, foo }{ f, foo }的并集是{ f, foo }。无论添加多少次,相同的对象都只会出现一次。
      猜你喜欢
      • 2012-02-25
      • 2017-10-27
      • 2019-11-18
      • 1970-01-01
      • 2014-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多