【问题标题】:How to get count of Unique chars in a string如何获取字符串中唯一字符的计数
【发布时间】:2009-08-24 12:27:52
【问题描述】:

如何获取字符串中唯一字符的数量?

例如:

NSString *myString = @"Hello";

我希望计数是 4 而不是 5。

我试图使用 myString 的 NSCharacterSet 并获取计数,但似乎不起作用。

NSCharacterSet *myCharSet = [NSCharacterSet characterSetWithCharactersInString:myString];

[myCharSet 计数];

感谢您的提示。

【问题讨论】:

  • 有人对如何做到这一点有任何建议吗?

标签: iphone sdk nsstring


【解决方案1】:

您的代码的派生代码:

NSCharacterSet *myCharSet = [NSCharacterSet
              characterSetWithCharactersInString:@"Hello"];    
NSLog(@"Character Set Count: %d", [myCharSet count]);

即使它在编译时发出警告,似乎也能正常工作。这会在我运行时打印“字符集计数:4”。

作为替代方案,NSSet 的工作方式是只允许唯一值。您可以将所有字符添加到 NSSet 中,然后获取其计数:

NSSet *set = [NSSet setWithArray:[@"H e l l o" 
                componentsSeparatedByString:@" "]];

NSLog(@"Set Count: %d", [set count]);

这会打印“Set Count: 4”

【讨论】:

    【解决方案2】:

    您的代码对我有用。如果您稍后在另一个例程中尝试获取 [myCharSet 计数],可能是因为 myCharSet 需要保留,并且最初设置为自动释放。

    【讨论】:

      【解决方案3】:

      试试这个:

      NSString *myString = @"Hello";
          NSRange range = NSMakeRange(location,length);
          NSString *myCharSet = [myString substringWithRange:range];
      

      【讨论】:

      • 代码中的位置和长度是多少?获取范围子字符串与计算唯一字符有什么关系?
      • 我不明白?你能解释一下你的解决方案吗?
      猜你喜欢
      • 2019-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-10
      • 1970-01-01
      • 2021-12-25
      • 1970-01-01
      相关资源
      最近更新 更多