首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Obj:用NSDictionary对象替换两个子字符串--只有一个正在改变

Obj:用NSDictionary对象替换两个子字符串--只有一个正在改变
EN

Stack Overflow用户
提问于 2015-12-12 03:18:21
回答 1查看 39关注 0票数 0

有个有趣的问题。我有一个NSDictionary,例如:

代码语言:javascript
复制
self.abbreviations = @{
                        @"REGL"     :   @"REGIONAL",
                        @"REG"      :   @"REGIONAL",
                        @"RE"       :   @"REGIONAL",
                        @"CO"       :   @"COUNTY",
}

如果缩写是在字符串中注明的,我想用全名替换它,方法是:

代码语言:javascript
复制
if ([destination containsString:[NSString stringWithFormat:@" %@,",key]])
        {
            destinationRev = [[destination stringByReplacingOccurrencesOfString:@"," withString:@" "]mutableCopy];
        }

for (id key in self.abbreviations)
{
    if ([destinationRev containsString:[NSString stringWithFormat:@" %@ ", key]])
    {
        destination = [destinationRev stringByReplacingOccurrencesOfString:key
                                                                withString:[self.abbreviations objectForKey:key]];
    }
}

然而,对于名称:城市CO区域,我有以下输出:城市CO区域。也就是说,虽然CO是在两个空间之间,但它并没有变化。

我遗漏了什么?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-12 04:44:09

您将单个替换的结果分配给引用destination,在每个循环运行中保持destinationRev不动,并覆盖destination。因此,您将只得到最后一个替换的字符串。

代码语言:javascript
复制
for (id key in self.abbreviations)
{
  if ([destinationRev containsString:[NSString stringWithFormat:@" %@ ", key]])
  {
    /* ---> */ destinationRev = [destinationRev stringByReplacingOccurrencesOfString:key
                                                            withString:[self.abbreviations objectForKey:key]];
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34235855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档